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

获取SID时遇“Identity参数无法验证”错误的技术求助

问题分析与解决

核心问题

你遇到的报错是因为$tmpID是一个包含SID属性的自定义对象,而非直接的SID字符串值。当你把这个对象传给Get-ADUser的-Identity参数时,PowerShell无法正确解析出有效的标识值,导致参数验证失败。

解决方案

修改Get-ADGroupMember后的管道操作,直接提取SID的属性值,而非保留对象:

foreach ($item in $tmpList){
    # 使用-ExpandProperty直接获取SID字符串
    $tmpID = Get-ADGroupMember -Server $server -Identity $item.Name | Select-Object -ExpandProperty SID | Select-Object -First 1

    if (!$tmpID) { 
        # somecode 
    }
    else{ 
        $tmpSurname = Get-ADUser -Server $server -Identity $tmpID -Properties Surname 
    }
}

或者,如果你不想修改$tmpID的获取逻辑,也可以在调用Get-ADUser时明确指定SID属性:

$tmpSurname = Get-ADUser -Server $server -Identity $tmpID.SID -Properties Surname

原因解释

原代码中Select-Object SID返回的是一个PSCustomObject,这个对象只有SID这一个属性。手动运行时你可能是查看了对象的SID属性值,但代码中直接将这个对象传给-Identity参数时,PowerShell无法自动将对象转换为参数所需的字符串/标识类型,从而触发"Identity属性为空"的验证错误。

而使用-ExpandProperty SID会直接返回SID的字符串值,这样$tmpID就是符合Get-ADUser参数要求的有效标识,不会再报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:31:01