我想将条目从Windows事件日志转换为JSON。但我想预先格式化一些字段。使用ForEach-Object对我来说看起来像是自然的决定,但当我尝试更改属性时,就像这样:
Get-EventLog System -Newest 2 | % { $_.EntryType = "$($_.EntryType)" } | ConvertTo-Json
它给了我错误:
'EntryType' is a ReadOnly property.
如何在转换为JSON之前制作$ _ object或preformat对象的可写副本?
答案 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