【问题标题】:Writing User ObjectID to variable #Powershell将用户 ObjectID 写入变量#Powershell
【发布时间】:2019-03-06 21:47:23
【问题描述】:
我正在寻找一种通过 AzureAD 自动将用户的对象 ID 写入变量的方法。
Get-AzureAdUser -ObjectId "Contose@contoso.com"
会给出ObjectId、DisplayName、UPN、UserType的输出
我希望将用户的 ObjectId(例如 qwert_1232_trwwqe)写入 $UserId 等变量,以便在脚本中进一步使用。
【问题讨论】:
标签:
windows
azure
powershell
properties
【解决方案1】:
Lee Dailey 提供了一个很好的指针:
通常的方法是将内容保存在$Var 中,并在需要时简单地处理属性。因此,将调用分配给 $Var 并使用 $Var.ObjectID 获取值。
也就是说,如果您确实希望将对象 ID 单独存储在 专用变量中,只需访问由返回的对象的 .ObjectId 属性Get-AzureAdUser:
$userId = (Get-AzureAdUser -ObjectId 'Contose@contoso.com').ObjectId
在后续评论中你提到到达:
$Var = Get-AzureAdUser -ObjectId "Contose@contoso.com" | Select ObjectId
但是,Select-Object cmdlet(其内置别名为 select)的这种使用实际上是没有意义的,因为这仍然会返回一个(新的、自定义的)object,它需要您访问其.ObjectId property 以检索对象 ID 值 - 为此,您可以将 Get-AzureAdUser 返回的对象 直接 分配给 $Var,正如李建议的那样。
可以使用Select-Object 提取单个属性值,即通过
@987654337 @参数:
$Var = Get-AzureAdUser -ObjectId 'Contose@contoso.com' | Select -ExpandProperty ObjectId
但是,(...).ObjectId 语法(点表示法)不仅更方便,而且更快 - 它甚至适用于多个对象(在PSv3+中),在这种情况下,数组的值是返回(称为member-access enumeration 的功能)。
简而言之,Select-Object -ExpandProperty 仅在您处理非常大必须在管道中一个接一个处理的集合时才需要.