如何用PowerShell设置Active Directory用户的startingDate属性?报错求助
解决Set-ADUser设置startingDate属性报错“参数不正确”的问题
问题核心原因
报错主要源于两个关键错误:
- 属性名称误用:AD中用户“起始日期”对应的LDAP属性名并非
startingDate,而是**msDS-StartDate**,startingDate只是该属性的显示名称,PowerShell的AD cmdlets仅识别LDAP属性名进行操作。 - 日期格式不匹配:
msDS-StartDate属于DateTime类型属性,直接传入普通字符串格式的日期会导致参数解析失败,需使用.NET DateTime对象或AD认可的标准格式字符串。
正确实现方案
方案1:使用.NET DateTime对象(推荐)
将目标日期转换为DateTime对象后传入,格式解析更稳定可靠:
# 构建符合要求的DateTime对象 $startDateTime = [DateTime]"2023-04-17 05:00:00" # 若为首次添加属性用-Add;若修改已有值用-Replace Set-ADUser ABC -Replace @{msDS-StartDate = $startDateTime}
方案2:使用ISO 8601标准格式字符串
若需直接传入字符串,必须使用带UTC时区标识的ISO 8601格式(末尾加.0Z):
Set-ADUser ABC -Replace @{msDS-StartDate = "20230417050000.0Z"}
重要注意事项
- 若目标用户从未设置过
msDS-StartDate属性,需将命令中的-Replace替换为-Add;若属性已存在,使用-Add会触发报错,必须用-Replace覆盖原有值。 - 执行脚本的账户需拥有修改AD用户属性的权限(如域管理员或已授权的专项账户)。
内容的提问来源于stack exchange,提问作者Xuan Khang Huynh
相关产品推荐
相关产品推荐

