2016-12-08 1 views
1

Ich versuche eine Schleife zu automatisieren, die durch unsere Server läuft, um Protokolle von eventviewer zu sammeln und später in eine Webseite zu exportieren, die gut funktioniert, ABER ich möchte eine Eigenschaft hinzufügen Diese Liste oder möglicherweise ändern eine vorhandene schreibgeschützte Eigenschaft. HierBenutzerdefinierte Eigenschaft hinzufügen oder schreibgeschützte Eigenschaft ersetzen

ist die scriptlines Ich verwende:

$eventlog = (Get-EventLog -LogName system -Newest 5 -EntryType Error) 
$eventlog | Select-Object Source,Message,MachineName | ConvertTo-Html -Head $a | Out-File C:\logs.htm 

Das einzige wirkliche Problem hier ist, dass die Eigenschaft „Computername“ Liste „name.domain.com“ statt nur „Name“, also ging ich und vor addierte die folgenden:

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

Dies wurde gestoppt, weil die Eigenschaft schreibgeschützt ist, so dachte ich, dass ich vielleicht eine Eigenschaft zu meinem Objekt hinzufügen könnte und es einfach füllen mit einer variablen, die ich immer noch glauben sollte funktionieren, aber ich Ich verstehe nicht, wie Add-Member funktioniert.
Hier ist, wie ich es ging:

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

oder

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

Offensichtlich allein dies nicht funktioniert, aber ich kann nicht meinen Kopf um, wie der Rest der Parameter sollen aussehen. Ich bin mir auch ziemlich sicher, dass die obige Zeile nicht einmal richtig ist, aber es ist genug, um Sie verstehen zu lassen, was ich zu erreichen versuche und vielleicht von einer besseren Lösung weiß!

Antwort

1

Sie könnten eine berechnete Eigenschaft verwenden. Auf diese Weise können Sie schreibgeschützte Eigenschaften ändern oder neue hinzufügen.

$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

richtig, ich mag dieses eine mehr – 4c74356b41

+0

Tausend Dank! Das ist perfekt, es ist kurz und einfach, das ist einfach zu verstehen! –

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

Dank 4c7, Sieht aus, als ob ich auf dem richtigen Weg war, habe die "NoteProperty" nicht selbst verstanden! –

+0

;) aber Martins Antwort ist besser;) Ich habe gerade darüber nachgedacht, wie ich es auf deine Art erreichen kann;) – 4c74356b41

Verwandte Themen