使用PowerShell从Azure AD获取employeeType数据失败求助
解决Azure AD PowerShell无法获取EmployeeType的问题
1. 修正脚本语法错误
你的原脚本存在语法问题,Where-Object块未正确闭合,可能导致后续逻辑异常。修正后的基础脚本如下:
$users = Get-AzureADUser -All $true | ` Where-Object {$_.CompanyName -like 'CompanyName*'} | ` Get-Random -Count 1000 | ` Select-Object EmployeeType, GivenName, Surname, @{Name='OfficeLocation'; Expression={$_.PhysicalDeliveryOfficeName}}
2. 显式指定获取EmployeeType属性
Get-AzureADUser默认仅返回核心用户属性,EmployeeType属于扩展属性,需通过-Properties参数显式声明获取:
$users = Get-AzureADUser -All $true -Properties EmployeeType | ` Where-Object {$_.CompanyName -like 'CompanyName*'} | ` Get-Random -Count 1000 | ` Select-Object EmployeeType, GivenName, Surname, @{Name='OfficeLocation'; Expression={$_.PhysicalDeliveryOfficeName}}
3. 检查ExtensionProperty中的键名(若步骤2无效)
如果EmployeeType未直接暴露,可能存储在ExtensionProperty中,且键名带有租户ID前缀。先执行以下命令查看具体键名:
Get-AzureADUser -All $true -Properties ExtensionProperty | Select-Object -First 1 -ExpandProperty ExtensionProperty
找到对应EmployeeType的键(例如extension_xxxxxxxxxx_EmployeeType),再修改Select-Object部分:
$users = Get-AzureADUser -All $true -Properties ExtensionProperty | ` Where-Object {$_.CompanyName -like 'CompanyName*'} | ` Get-Random -Count 1000 | ` Select-Object @{Name='EmployeeType'; Expression={$_.ExtensionProperty['extension_xxxxxxxxxx_EmployeeType']}}, GivenName, Surname, @{Name='OfficeLocation'; Expression={$_.PhysicalDeliveryOfficeName}}
4. 迁移到Microsoft Graph PowerShell(推荐)
AzureAD模块已被弃用,Microsoft Graph模块返回的属性更全面且稳定:
# 首次运行需安装模块 Install-Module Microsoft.Graph.Users -Force # 连接到Graph Connect-MgGraph -Scopes User.Read.All # 获取用户数据 $users = Get-MgUser -All -Filter "startsWith(CompanyName,'CompanyName')" -Properties EmployeeType, PhysicalDeliveryOfficeName | ` Get-Random -Count 1000 | ` Select-Object EmployeeType, GivenName, Surname, @{Name='OfficeLocation'; Expression={$_.PhysicalDeliveryOfficeName}}
内容的提问来源于stack exchange,提问作者Sanktas
相关产品推荐
相关产品推荐

