首页 > 解决方案 > 将用户 ObjectID 写入变量#Powershell

问题描述

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

获取 AzureAdUser -ObjectId "Contose@contoso.com"

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

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

标签: windowsazurepowershellproperties

解决方案


Lee Dailey提供了一个很好的指导:

通常的方法是将内容保存在 中,$Var并在需要时简单地处理属性。因此,将调用分配给 a$Var并使用 获取值$Var.ObjectID

也就是说,如果您确实想将对象 ID单独存储在专用变量中,只需访问由.ObjectId返回的对象的属性Get-AzureAdUser

$userId = (Get-AzureAdUser -ObjectId 'Contose@contoso.com').ObjectId

在后续评论中,您提到到达:

$Var = Get-AzureAdUser -ObjectId "Contose@contoso.com" | Select ObjectId

但是,这种对cmdlet (其Select-Object内置别名为正如 Lee 所建议的,本可以将直接返回的对象分配给。select.ObjectId Get-AzureAdUser $Var

可以使用提取单个属性Select-Object通过
-ExpandProperty <propertyName>参数

$Var = Get-AzureAdUser -ObjectId 'Contose@contoso.com' | Select -ExpandProperty ObjectId

然而,(...).ObjectId语法(点表示法不仅更方便,而且速度更快——它甚至适用于多个对象(在 PSv3+ 中),在这种情况下会返回一个值数组(一个称为成员枚举的功能)。

简而言之,Select-Object -ExpandProperty仅当您正在处理必须在管道中一一处理的非常大的集合时才需要。


推荐阅读