将用户ObjectID写入变量#Powershell

时间:2019-03-06 21:47:23

标签: windows azure powershell properties

我正在寻找一种通过AzureAD自动将用户的对象ID写入变量的方法。

  

Get-AzureAdUser -ObjectId“ Contose@contoso.com”

将给出ObjectId,DisplayName,UPN,UserType的输出

我希望将用户的ObjectId(例如qwert_1232_trwwqe)写到$ UserId之类的变量中,以便在脚本中进一步使用。

1 个答案:

答案 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>。