Set-ADAccountExpiration设置AD账号过期时间不遵循本地格式问题
问题根因
$Calendar.SelectionStart返回的是原生DateTime类型对象,你在执行Set-ADAccountExpiration时给-DateTime参数传递的是被引号包裹的"$EndDate",此时PowerShell会根据当前操作系统的区域设置将DateTime对象隐式转换为字符串。而AD域服务的PowerShell cmdlet解析字符串格式的日期时,默认使用en-US(月/日/年)的区域规则,就会出现日月位置互换的异常。
解决方案
方案1(推荐):直接传递DateTime对象
-DateTime参数本身原生支持DateTime类型输入,不需要转成字符串,去掉参数值两侧的引号即可:
Set-ADAccountExpiration -Identity $User -DateTime $EndDate
方案2(适配必须使用字符串的场景):转成无歧义的标准格式
如果你的逻辑必须使用字符串传递日期,就将日期格式化为国际通用的ISO 8601格式,避免不同区域规则解析歧义:
# 格式化为yyyy-MM-dd格式字符串 $EndDateStandard = $EndDate.ToString('yyyy-MM-dd') Set-ADAccountExpiration -Identity $User -DateTime $EndDateStandard
内容的提问来源于stack exchange,提问作者kalinzange
相关产品推荐
相关产品推荐

