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

批量设置AD承包商用户账号统一过期日期遇错求助

问题排查与解决思路

核心错误原因

你在循环中直接将CSV导入的整个对象传给Set-ADAccountExpiration的-Identity参数,而该参数需要的是AD账号的唯一标识符(如SAMAccountName、DistinguishedName等字符串),无法识别自定义的CSV对象,这是导致空引用错误的直接原因。

快速修复方案

修改循环内的命令,明确指定使用CSV中的SAMAccountName属性作为身份标识:

$Users = Import-Csv -LiteralPath C:\Results\AllContractors.csv

ForEach($User in $Users){
    # 提取SAMAccountName属性值传入-Identity
    Set-ADAccountExpiration -Identity $User.SAMAccountName -DateTime "2023-07-01"
}

注意:建议使用yyyy-MM-dd的ISO日期格式,避免因系统区域设置不同导致日期解析错误

优化流程(避免中间CSV文件)

可以跳过导出/导入CSV的步骤,直接筛选账号并批量设置,减少出错环节:

# 直接筛选c_开头的账号,批量设置过期日期
Get-ADUser -Filter "SAMAccountName -like 'c_*'" | 
    Set-ADAccountExpiration -DateTime "2023-07-01"

这里用AD内置的Filter参数替代后续的Where筛选,效率更高(Filter在AD服务器端执行,而非本地)

额外排查点

如果修复后仍报错,检查以下内容:

  • 打开C:\Results\AllContractors.csv确认:无空白行、SAMAccountName列无空值、账号名称正确
  • 验证账号是否存在:执行Get-ADUser -Identity "c_testuser"(替换为CSV中的某个账号),确认能返回用户对象
  • 权限检查:当前运行PowerShell的账号需拥有修改AD用户账户过期属性的权限
  • 日期有效性:确保指定的过期日期是合理的(晚于当前日期,AD不允许设置过去的过期日期除非特殊需求)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:12:13