2

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

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

它给了我错误:

'EntryType' is a ReadOnly property.

如何在转换为 JSON 之前制作 $_ 对象的可写副本或预格式化对象?

4

1 回答 1

2

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

有关计算属性的更多信息,请参阅本文

Get-EventLog System -Newest 2 |
    Select-Object Index, Time, Source, InstanceID, @{Name='MyEntryType';Expression={$_.EntryType } } |
    ConvertTo-Json
于 2014-06-02T17:51:47.533 回答