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

执行Set-ADUser报错“对象引用未设置为对象实例”原因咨询

AD用户脚本报错“Object reference not set to an instance of an object”解析

报错含义

这个错误属于空引用异常,本质是你传递给Set-ADUser命令的参数不符合要求——要么是值为$null的无效对象,要么是参数格式不是命令预期的类型,导致命令无法定位到对应的AD用户对象进行操作。

脚本问题分析

你的脚本存在两个关键问题引发了该报错:

  • 使用Select sAMAccountName得到的是包含sAMAccountName属性的自定义对象集合,而非直接的用户名字符串,直接把整个集合传给-Identity参数,命令无法识别出有效的用户标识。
  • for ($users)是错误的循环写法,PowerShell中遍历集合需要用foreach ($user in $users)语法,或者直接通过管道传递对象。

修正后的脚本

方式一:提取用户名后遍历修改

# 直接提取所有AD用户的用户名(字符串格式)
$users = Get-ADUser -Filter * | Select-Object -ExpandProperty sAMAccountName
# 遍历每个用户执行修改
foreach ($user in $users) {
    Set-ADUser -Identity $user -CannotChangePassword $false
}

方式二:用管道简化操作(更高效)

# 直接通过管道传递AD用户对象给Set-ADUser,无需单独提取属性
Get-ADUser -Filter * | Set-ADUser -CannotChangePassword $false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:48:12