powershell在使用ConvertTo-Json时将date属性转换为字符串

时间:2017-11-29 09:20:38

标签: powershell hyper-v

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

要根据用户定义的表达式选择属性,可以通过以下方式在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值。