繁体   English   中英

使用 ConvertTo-Json 时,powershell 将日期属性转换为字符串

[英]powershell convert the date property to string when using ConvertTo-Json

我想从Get-VM cmdlet 获取所有 Hyper-V VM 信息,如下所示:

Get-Vm | Select-Object * | ConvertTo-Json

每个 VM 字典中的CreationTime在输出中看起来像\\/Date(-11644473600000)\\/",

如何2017/11/29 16:09:00在输出 json 中看起来像这种格式2017/11/29 16:09:00

当我猜测它是 Epoch 时间戳的数量时,我发现它有时是一个负数。

我发现一些关于这个问题的文章以Get-Date为例,但在我的情况下,它是Get-VM中的一个属性,我不确定是否有一种更快的方法来转换日期属性而无需长脚本来解析输出。

要根据用户定义的表达式选择属性,可以通过以下方式在Select-Object定义它们:

Get-VM | Select-Object -Property @{Name="ReadableCreationTime"; Expression={Get-Date $_.CreationTime}}, *

这将选择用户定义的属性ReadableCreationTime和所有其他属性 ( * )。

现在,您想排除原始CreationTime因为它 a) 难以阅读并且 b) 对ReadableCreationTime来说是多余的。 这可以使用-ExcludeProperty参数来完成:

Get-VM | Select-Object -Property @{Name="ReadableCreationTime"; Expression={Get-Date $_.CreationTime}}, * -ExcludeProperty CreationTime

...并将结果通过管道传输到ConvertTo-Json

请记住,在读取生成的 json 时,您必须解析日期,因为它只是一个字符串,而不是有效的 Date 值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM