我正在尝试自动化一个循环,通过我们的服务器从eventviewer收集日志,然后导出到一个工作正常的网页,但是,我想在此列表中添加一个属性,或者可能修改现有的读取唯一的财产。
以下是我正在使用的脚本:
$eventlog = (Get-EventLog -LogName system -Newest 5 -EntryType Error)
$eventlog | Select-Object Source,Message,MachineName | ConvertTo-Html -Head $a | Out-File C:\logs.htm
这里唯一真正的问题是属性“MachineName”列出“name.domain.com”而不仅仅是“name”,所以我继续添加以下内容:
$eventlog | ForEach-Object {
$_.MachineName=$env:COMPUTERNAME
}
这已经停止,因为该属性是只读的,所以我想我可以在我的对象中添加一个属性,并用一个我仍然认为应该工作的变量填充它但是我没有得到{{{ 1}}完全有效 我是这样做的:
Add-Member
或
$eventlog | Add-Member -Name Hostname -Value $env:COMPUTERNAME
显然,仅此一项不起作用,但我无法理解剩下的参数应该如何看待。我也相当肯定上面的那条线甚至不对,但它足以让你理解我想要实现的目标,也许还有更好的解决方案!
答案 0 :(得分:1)
$eventlog | Add-Member -Name 'Hostname' -Value $env:COMPUTERNAME -MemberType NoteProperty
$eventlog | Select ...,hostname | ConvertTo-Html -Head $a | Out-File C:\logs.htm
答案 1 :(得分:1)
您可以使用计算属性。这样您就可以修改只读属性或添加新....
$eventlog = (Get-EventLog -LogName system -Newest 5 -EntryType Error)
$eventlog | Select-Object Source,Message, @{l='MachineName'; e={$env:COMPUTERNAME}} |
ConvertTo-Html -Head $a |
Out-File C:\logs.htm