windows - 将用户 ObjectID 写入变量#Powershell
问题描述
我正在寻找一种通过 AzureAD 自动将用户的对象 ID 写入变量的方法。
获取 AzureAdUser -ObjectId "Contose@contoso.com"
将给出 ObjectId、DisplayName、UPN、UserType 的输出
我希望将用户的 ObjectId(例如 qwert_1232_trwwqe)写入 $UserId 等变量,以便在脚本中进一步使用。
解决方案
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
仅当您正在处理必须在管道中一一处理的非常大的集合时才需要。
推荐阅读
- ruby-on-rails - Polymorphic relationship
- asp.net-core - 由于 Razor 脚本标记,完整标识脚手架失败
- html - HTML 5 中是否需要 Open Graph 前缀属性?
- python - Pycharm删除参数字段中的引号
- php - 如何使用非标准外键创建 hasMany 关系
- reactjs - React 组件只渲染我的对象中的一项
- vue.js - 如何将二维数据值绑定到buefy表中的复选框v-modal?
- batch-file - 如何在 bat 脚本中获取用户输入?
- javascript - 如何对具有相同值的元素进行排序
- deep-learning - 病灶的语义分割