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

PowerShell调用ConvertTo-Json导出AD用户数据日期格式异常问询

问题原因分析
  • 该差异由两台服务器上的PowerShell版本不一致导致
  • ConvertTo-Json cmdlet 在PowerShell 5.1及更早版本中,默认会将.NET DateTime类型的对象序列化为ASP.NET AJAX风格的/Date(时间戳)/格式;而PowerShell 7及更高版本中,默认将日期序列化为可读性更高的ISO 8601格式(例如2019-09-17T15:53:25+08:00)
  • 额外注意你的代码存在变量名笔误:你定义的属性数组变量名为$adusers,但调用Get-ADUser时传的参数是$aduser,少了末尾的s,会导致实际没有指定拉取自定义属性,只能拿到AD用户的默认属性集,属于潜在问题点
解决办法
  • 首先确认两台服务器的PowerShell版本,执行命令$PSVersionTable.PSVersion即可查看
  • 方案1:在出问题的服务器上安装PowerShell 7+版本,原有代码无需修改即可输出标准格式的日期
  • 方案2:不升级PowerShell的前提下,在选择属性时手动将日期类型转换为字符串格式,示例代码:
$adusers = @( "Name","SamAccountName","GivenName","Surname","UserAccountControl",
    @{Name = "WhenCreated"; Expression = { $_.WhenCreated.ToString("yyyy-MM-dd HH:mm:ss") }},
    @{Name = "lastLogonDate"; Expression = { $_.lastLogonDate.ToString("yyyy-MM-dd HH:mm:ss") }}
)
$users = Get-ADUser -Filter * -Properties $adusers
$users | Select-Object $adusers | ConvertTo-Json | Out-File "test.JSON"
  • 方案3:对序列化后的JSON字符串做正则替换,批量转换日期格式,适合不想修改属性定义的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:12:03