Foreach-Object在PowerShell中创建$ _的可变副本

时间:2014-06-02 17:08:23

标签: json powershell get-eventlog

我想将条目从Windows事件日志转换为JSON。但我想预先格式化一些字段。使用ForEach-Object对我来说看起来像是自然的决定,但当我尝试更改属性时,就像这样:

Get-EventLog System -Newest 2 | % { $_.EntryType = "$($_.EntryType)" } | ConvertTo-Json

它给了我错误:

'EntryType' is a ReadOnly property.

如何在转换为JSON之前制作$ _ object或preformat对象的可写副本?

1 个答案:

答案 0 :(得分:2)

您应该可以使用Select-Object来执行您想要的操作。 Select-Object将创建可以自定义的全新对象(PSCustomObject类型)。您还可以限制实际需要的属性,并可以定义自己的计算属性。

有关计算属性的详细信息,请参阅this article

Get-EventLog System -Newest 2 |
    Select-Object Index, Time, Source, InstanceID, @{Name='MyEntryType';Expression={$_.EntryType } } |
    ConvertTo-Json