我正在寻找一种通过AzureAD自动将用户的对象ID写入变量的方法。
Get-AzureAdUser -ObjectId“ Contose@contoso.com”
将给出ObjectId,DisplayName,UPN,UserType的输出
我希望将用户的ObjectId(例如qwert_1232_trwwqe)写到$ UserId之类的变量中,以便在脚本中进一步使用。
答案 0 :(得分:0)
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
)的这种使用实际上是毫无意义的,因为它仍然会返回(新的,自定义的)对象这需要您访问其.ObjectId
属性才能检索对象ID值-为此,您可以直接分配由Get-AzureAdUser
返回的对象< / em>转到$Var
,如Lee所建议。
可以使用Select-Object
提取单个属性 value ,即通过
-ExpandProperty <propertyName>
参数:
$Var = Get-AzureAdUser -ObjectId 'Contose@contoso.com' | Select -ExpandProperty ObjectId
但是, (...).ObjectId
语法(点符号)不仅 更方便,而且更快 -并且它甚至可以在多个对象(在PSv3 +中)上工作,在这种情况下,数组为值将返回(称为member enumeration的功能)。
简而言之,仅当您正在处理必须在管道中一个一个处理一个很大的大型 集合时,才需要 Select-Object -ExpandProperty
< / strong>。