如何修改Active Directory(AD)密码过期日期的输出格式为DD/MM/YYYY hh:mm:ss
实现方案
PowerShell 中的 DateTime 类型对象支持直接调用 ToString() 方法传入自定义格式字符串,即可实现你需要的日期格式调整,格式说明如下:
dd:两位格式的日期MM:两位格式的月份*(必须大写,小写mm对应分钟字段)*yyyy:四位格式的年份HH:24小时制的两位小时,hh为12小时制的两位小时mm:两位格式的分钟ss:两位格式的秒数
代码修改示例
你可以直接修改原有代码中日期赋值的逻辑即可,同时推荐优化重复转换逻辑,避免重复执行FromFileTime操作,修改后代码片段如下:
if ($_."msDS-UserPasswordExpiryTimeComputed" -ne 9223372036854775807) { # 该场景为用户密码正常即将过期的标准情况 $DateExpiry = $null $DaysToExpire = $null try { # 先转换得到原始DateTime对象,后续计算和格式化都复用该对象 $rawExpiryTime = [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") # 按DD/MM/YYYY 24小时制格式输出日期 $DateExpiry = $rawExpiryTime.ToString("dd/MM/yyyy HH:mm:ss") # 直接使用原始DateTime对象计算剩余天数,无需二次转换 $DaysToExpire = (New-TimeSpan -Start (Get-Date) -End $rawExpiryTime).Days } catch { $DateExpiry = $_."msDS-UserPasswordExpiryTimeComputed" $DaysToExpire = $null } }
如果你需要使用12小时制的时间显示,只需要将格式字符串中的HH替换为hh即可。
内容的提问来源于stack exchange,提问作者Arbelac
相关产品推荐
相关产品推荐

