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

PowerShell运行AD改密脚本提示Identity参数为空报错如何解决

报错原因
  • PowerShell远程执行存在作用域隔离限制:Invoke-Command 内的ScriptBlock运行在远程服务器的独立会话环境中,默认无法直接读取本地脚本定义的$user、$pass变量,远程会话中这两个变量值为$null,因此Set-ADAccountPassword的Identity参数接收到空值,触发校验报错。
解决方法

两种可直接落地的修改方案,任选其一即可:

方案1:使用$using:作用域修饰符(最简便)

直接在脚本块中引用本地变量时,添加using:前缀,明确告知PowerShell该变量来自本地会话作用域,修改后的Invoke-Command代码如下:

Invoke-Command -Session $session -ScriptBlock {Set-ADAccountPassword -Identity $using:user -Reset -NewPassword $using:pass}

方案2:使用-ArgumentList传参(兼容性更好)

通过Invoke-Command的-ArgumentList参数将本地变量按顺序传递给远程脚本块,脚本块内用param接收参数,适合需要兼容旧版本PowerShell的场景,代码示例:

Invoke-Command -Session $session -ScriptBlock {
    param($remoteUser, $remotePass)
    Set-ADAccountPassword -Identity $remoteUser -Reset -NewPassword $remotePass
} -ArgumentList $user, $pass
额外校验建议

修改后如果仍有报错,可先确认你传入的$user参数值是Active Directory可识别的合法身份标识,支持的格式包括SAM账号名、用户DN、用户对象GUID、用户UPN等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:54:03