使用PowerShell从Microsoft Azure Active Directory检索数据

4ktjp1zp  于 2023-05-29  发布在  Shell
关注(0)|答案(3)|浏览(186)

我无法检索所有我想要的数据,即使我可以看到数据存在,而我正在通过门户查看。

$users = Get-AzureADUser -All $true | `
    Where-Object {$_.CompanyName -like 'CompanyName*' | `
    Get-Random -Count 1000 | `
    Select-Object @{N="EmployeeID";E={$_.ExtensionProperty.employeeId}}, GivenName, Surname, OfficeLocation

我已经更改了公司名称,并删除了一些我出于隐私原因检索的对象。上面的脚本在我的PowerShell窗口中使用,它成功地检索了我想要的数据。
EmployeeId一开始不起作用,通过谷歌搜索和测试,我发现我必须使用“ExtensionProperty”才能检索该数据。我现在遇到的问题是,无论我怎么尝试,都无法检索到“OfficeLocation”。
我已经仔细检查,以确保我有适当的访问我的帐户,一切似乎都是为了,为什么我不能检索任何数据为“officeLocation”?
--我尝试了以下方法

  • 我试着为OfficeLocation使用各种名称。例如= OfficeLocation、officeLocation、Office、office_location、Office_Loc、Location等。我花了两天时间想弄明白。

我试着写:

@{N="OfficeLocation";E={$_.AdditionalProperties["officeLocation"]}}

我也试过:

@{N="OfficeLocaton";E={$_.ExtensionProperty.officeLocation}}

两个都不行。This is how the field looks in my AzureAD
因此,在这个示例中(我已经介绍了实际位置),我可以看到存在关于“officelocation”的数据,但我无法使用PowerShell脚本检索它。
这是不是可以通过PowerShell来实现?我需要使用Microsoft Graph API吗?
感谢你们的帮助和指导,你们可以帮助我。

编辑拼写

qlfbtfca

qlfbtfca1#

请注意,在使用Azure AD PowerShell v2模块时,OfficeLocation 显示在PhysicalDeliveryOfficeName属性中。
在您的示例中,您需要修改代码,将OfficeLocation替换为PhysicalDeliveryOfficeName,如下所示:

$users = Get-AzureADUser -All $true | `
    Where-Object {$_.CompanyName -like 'CompanyName*' | `
    Get-Random -Count 1000 | `
    Select-Object @{N="EmployeeID";E={$_.ExtensionProperty.employeeId}}, GivenName, Surname, PhysicalDeliveryOfficeName

回复:

或者,您也可以使用Microsoft Graph API来获取用户,运行以下查询:

GET https://graph.microsoft.com/v1.0/users?$filter=companyName in ('CompanyName')&$select=givenName,surname,officeLocation,employeeId&$count=true
ConsistencyLevel: Eventual

回复:

wljmcqd8

wljmcqd82#

我认为你需要更新Azure的PowerShell模块,因为上一个版本有一个不同的命令:Get-AzADUser
试试这个:

Update-Module -Name Az -Force

然后:

$users = Get-AzADUSer  | `
    Where-Object {$_.CompanyName -like 'CompanyName*' | `
    Get-Random -Count 1000 | `
    Select-Object @{N="EmployeeID";E={$_.ExtensionProperty.employeeId}}, GivenName, Surname, OfficeLocation
m4pnthwp

m4pnthwp3#

管道对象的正确语法是$_,而不仅仅是$。如果没有别的,试试:

@{n="EmployeeID";n={$_.ExtensionProperty.employeeId}}

要查看扩展属性对象中的实际键,我建议:

(Get-AzureADUser | select -first 1).ExtensionProperty.Keys

相关问题