你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

我要查找用户或组,但 PowerShell 未返回该对象

有时,你尝试查找对象(例如,组或用户)但 PowerShell 不会返回要查找的对象。 但是,你确信它存在,因为它显示在门户中,或者因为你刚刚创建了对象。 此处发生了什么情况以及如何解决此问题?

搜索对象

搜索用户最常见的方法是使用Get-AzureADUser获取目录中的所有用户,然后筛选要查找的属性值。 例如:

Get-AzureADUser | Where {$_.City -eq "London"}

你希望 PowerShell 返回 City 属性的值相等 London的所有用户。 但是,默认情况下,Get-AzureADUser cmdlet 仅返回查找的前 100 个对象。 后续 where 筛选这些前 100 个对象,以查找 City 相等 London的用户。 如果要查找的用户存在于目录中,但不存在于 Get-azureADUser cmdlet 返回的前 100 个用户中,则不会返回该用户。

如何返回所有对象以进行后续筛选

若要获取 Get-AzureADUser cmdlet 以返回所有用户,请使用 -All 参数。 例如:

Get-AzureADUser -All $True

现在,将返回所有用户对象,并且筛选器适用于目录中的所有用户对象。 因此,查找伦敦城市等于伦敦的所有用户的正确方法如下:

Get-AzureADUser -All $True | Where {$_.City -eq "London"}

此方法适用于对象的所有属性。 对于有限数量的字符串属性,还可以使用 -SearchString 参数。 例如:

Get-AzureADUser -SearchString "London"

这将返回所有用户,其中一个限定字符串属性的用户对象相 London等,其中包括 DisplayName 等于 Jack London 或 Department 相等 London的用户。