Azure AD PowerShell调用Get-AzureADGroup报无效对象ID错误解决咨询
问题原因
你的推测正确,报错根本原因是$GroupObjectID变量存储的是包含ObjectId属性的PSCustomObject对象,而非纯字符串类型的ObjectId值。调用Get-AzureADGroup时-ObjectId参数要求传入字符串格式的ID,无法识别你传入的对象结构,错误提示里的@{ObjectId=a0xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx}就是PowerShell把自定义对象转成字符串时的默认格式。Write-Output能正常展示ID的原因是PowerShell输出对象时会自动格式化展示属性内容,仅属于展示层面的正常效果,不代表变量存储的是纯字符串。
另外注意检查变量名一致性:你代码里定义的变量是$GroupObjectID,报错中调用命令时使用的变量名为$DecryptGroupObjectID,如果是笔误也需要同步修正。
解决方案
你可以任选以下任意一种方法修复:
- 方法1:赋值时直接展开属性取字符串值(最推荐)
修改第一行赋值代码,添加-ExpandProperty参数直接提取ObjectId的字符串值:
$GroupObjectID = Get-AzureADGroup -SearchString "XXXXXXXXXXXXXXXXXXXX" | Select-Object -ExpandProperty ObjectId # 后续可以直接正常调用 Get-AzureADGroup -ObjectId $GroupObjectID
- 方法2:调用时直接访问对象的属性值
如果你不想修改原有赋值逻辑,调用命令时直接访问变量的ObjectId属性即可:
Get-AzureADGroup -ObjectId $GroupObjectID.ObjectId
- 方法3:赋值时强转为字符串
也可以在赋值时通过强转直接拿到字符串格式的ID:
$GroupObjectID = [string](Get-AzureADGroup -SearchString "XXXXXXXXXXXXXXXXXXXX").ObjectId
内容的提问来源于stack exchange,提问作者Daiter123
相关产品推荐
相关产品推荐

