gpt4 book ai didi

powershell - 处理 Power-Shell JSON 对象中的日期

转载 作者:行者123 更新时间:2023-12-04 14:48:03 24 4
gpt4 key购买 nike

我正在尝试从 AD 获取基于 LastLogondate 的用户信息。我正在将最终输出转换为 JSON 格式。

这里是处理日期的小脚本。实际上,我将 $PasswordAge 作为用户的 LastLogonDate 传递。

 $PasswordAge = (Get-Date).AddDays(-60) # This is actually LastLogonDate from user info
$CurrentDate = (Get-Date)
#Write-Host $PasswordAge
try
{
$LastLogonDays = (New-TimeSpan -Start $PasswordAge -End $CurrentDate).Days
#Write-Host $LastLogonDays
}
catch{
$Message = $_.Exception.Message
}

$JSONOutput = @{"result"=$LastLogonDays;"error"=$Message} | ConvertTo-Json #-Compress
Write-Output $JSONOutput

如果我使用 ConvertTo-Json 并打印输出,则会收到以下错误。日差是正确的,但每次都收到错误消息

 {
"error": "Cannot bind parameter \u0027Start\u0027 to the target. Exception setting \"Start\": \"Cannot convert null to type \"System.DateTime\".\"",
"result": 60
}

提前感谢您的帮助。

最佳答案

New-TimeSpan 糟透了。我几乎总是得到同样的错误。据报道,该问题源于您操作系统上的文化(语言)设置不匹配,您的操作系统被配置为用于日期和时间的格式,以及 DateTime 对象的实际格式。我住在美国,使用英语,并使用我们的标准日期格式,但在让 New-TimeSpan 正常运行方面我仍然遇到这个问题。我早就放弃让这个 cmdlet 始终如一地工作了。

幸运的是,有一个简单的解决方法;只需减去两个日期时间即可得到 System.TimeSpan。每次都有效。

$LastLogonDays = ( $CurrentDate - $PasswordAge ).Days

关于powershell - 处理 Power-Shell JSON 对象中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69621931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com