2016-12-08 3 views
1

Я пытаюсь автоматизировать цикл, который проходит через наши серверы, собирает журналы из eventviewer для последующего экспорта в веб-страницу, которая работает отлично, НО, я хотел бы добавить свойство к этот список или возможно изменить существующее свойство только для чтения.Добавление настраиваемого свойства или замена свойства только для чтения

Вот это scriptlines я использую:

$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» вместо просто «имя», так что я пошел вперед и добавил следующее:

$eventlog | ForEach-Object { 
$_.MachineName=$env:COMPUTERNAME 
} 

Это была остановлена, так как свойство только для чтения, так что я думал, что я мог бы, возможно, добавить свойство к моему объекту и просто заполнить его с переменной, которую я до сих пор считаю, должно работать, но я «Не знаю, как Add-Member работает полностью.
Вот как я пошел об этом:

$eventlog | Add-Member -Name Hostname -Value $env:COMPUTERNAME 

или

Add-Member -InputObject $eventlog -Name Hostname -Value $env:COMPUTERNAME 

Очевидно, что это само по себе не работает, но я не могу получить мою голову вокруг как все остальные параметры должны смотреть. Я также уверен, что линия выше не верна, но этого достаточно, чтобы вы поняли, чего я пытаюсь достичь, и, возможно, знаю о лучшем решении!

ответ

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 
+0

вправо, мне это нравится еще – 4c74356b41

+0

Спасибо тысячу раз! Это прекрасно, это просто и просто, что легко понять! –

1
$eventlog | Add-Member -Name 'Hostname' -Value $env:COMPUTERNAME -MemberType NoteProperty 
$eventlog | Select ...,hostname | ConvertTo-Html -Head $a | Out-File C:\logs.htm 
+0

Спасибо 4c7, похоже, что я был на правильном пути, не понимал «NoteProperty», хотя сам по себе! –

+0

;) но ответ Мартина лучше;) Я как раз думал, как добиться этого по вашему пути;) – 4c74356b41

Смежные вопросы