You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何将Azure AD组的ObjectId属性正确赋值给变量?

问题原因

你当前返回的$Group是包含ObjectId属性的PowerShell自定义对象,而非单纯的ObjectId字符串值,根源是Select-Object -Property ObjectId只会保留对象的指定属性,不会直接提取属性的原始值。

解决方法

把Select-Object的参数替换为-ExpandProperty,即可直接提取属性的字符串值,同时注意Add-AzureADGroupMember的RefObjectID参数也需要传入用户的ObjectId,直接传UPN可能触发报错,修正后代码如下:

$UPN = "someuser@domain.com"
$Selected = "Group Display Name"
# 提取组的ObjectId字符串
$GroupObjectId = Get-AzureADGroup -Filter "DisplayName eq '$Selected'" -All $true | Select-Object -ExpandProperty ObjectID
# 提取用户的ObjectId
$UserObjectId = Get-AzureADUser -ObjectId $UPN | Select-Object -ExpandProperty ObjectID
Add-AzureADGroupMember -ObjectID $GroupObjectId -RefObjectID $UserObjectId

可选优化方案

可以增加异常判断逻辑,覆盖组不存在、重名组的场景:

$UPN = "someuser@domain.com"
$Selected = "Group Display Name"
$GroupObjectId = Get-AzureADGroup -Filter "DisplayName eq '$Selected'" -All $true | Select-Object -ExpandProperty ObjectID

# 组不存在判断
if ($null -eq $GroupObjectId) {
    Write-Error "未找到显示名称为 $Selected 的组,请检查输入是否正确"
    return
}
# 重名组判断
if ($GroupObjectId -is [array]) {
    Write-Error "找到 $($GroupObjectId.Count) 个显示名称为 $Selected 的组,请使用更精确的筛选条件"
    return
}

$UserObjectId = Get-AzureADUser -ObjectId $UPN | Select-Object -ExpandProperty ObjectID
Add-AzureADGroupMember -ObjectID $GroupObjectId -RefObjectID $UserObjectId

你也可以不做属性展开,直接引用对象的属性值完成调用,写法如下:

$Group = Get-AzureADGroup -Filter "DisplayName eq '$Selected'" -All $true
$User = Get-AzureADUser -ObjectId $UPN
Add-AzureADGroupMember -ObjectID $Group.ObjectId -RefObjectID $User.ObjectId

内容的提问来源于stack exchange,提问作者iBowler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:45:04