5 Stimmen

powershell: get-winevent hat keine Nachrichtendaten?

Wenn ich das folgende Skript ausführe, um Protokolldateien abzurufen, ist das Feld "Nachricht" von get-winevent leer, enthält aber Daten, wenn ich get-eventlog ausführe. Hat jemand eine Idee, warum?

#has message data 
Get-Eventlog -LogName application -Newest 10

 #date 10 days ago 
$EventStartDate = get-date("10 May 2012") 
$EventEndDate = get-date("11 May 2012") 
$EventLogNames = @("Application", "system")

#critea for winevent 
$EventCritea = @{logname = $EventLogNames; StartTime=$EventStartDate; EndTime=$EventEndDate}

#Retrieves the event log 
$RetreivedEvents = Get-WinEvent -computername localhost -FilterHashtable $EventCritea
$RetreivedEvents | fl id, logname, MachineName, Message, TimeCreated

8voto

Richard Punkte 103159

Unter welchem Gebietsschema arbeiten Sie?

Es gibt einen .NET-Fehler, bei dem die zugrunde liegende .NET-Methode (die Get-WinEvent verwendet) nicht in der Lage ist, lokalisierte Felder zu füllen (wie Message ) in einigen Regionen (wie en-GB ).

Die Lösung ist der Wechsel zu en-US für den Befehl:

$orgCulture = Get-Culture
[System.Threading.Thread]::CurrentThread.CurrentCulture = New-Object "System.Globalization.CultureInfo" "en-US"
# Perform Get-WinEvent
[System.Threading.Thread]::CurrentThread.CurrentCulture = $orgCulture

2voto

Victor Ashiedu Punkte 21

Ich glaube, das liegt daran, dass die Nachrichten in einem Eigenschaftswert versteckt sind. Um alle Nachrichten anzuzeigen, leiten Sie das get-winevent mit den folgenden Ausdrücken an die select-Anweisung weiter:

@{Label='Messages';Expression={$_.properties.Value}}

Wenn Sie eine bestimmte Meldung anzeigen möchten, z. B. Logon Process (In Security Logs), verwenden Sie den Ausdruck:

@{Label='Logon Process';Expression={$_.properties.Value[3]}}

0voto

Chadddada Punkte 103

Ich weiß, dass get-winevent unter Windows Server 2003 in der Vergangenheit nicht funktioniert hat, als ich es ausprobiert habe. Grundsätzlich sagte die PS-Umgebung, dass get-winevent unter 2003 nicht funktioniert. Möglicherweise war das damals PS v1, so dass ich nicht sicher bin, ob das mit neueren Versionen von PS behoben wurde: Ich arbeite jetzt mit 2K8 R2.

In meinem

0voto

Djarid Punkte 376

Unter welchem PSHost laufen Sie?

Ich habe ein Problem mit PS V2.0, das unter Windows 7 mit Zugriff auf W2k8 läuft. Bei der Ausführung in einer Powershell-Konsole oder in Powershell ISE werden alle Daten abgerufen. Wenn es jedoch in einem Runspace oder von PowerGUI (pro) aus ausgeführt wird, wird nur eine Teilmenge zurückgegeben, die die Eigenschaft "Message" nicht enthält.

[EDIT] Richards Beitrag ermöglicht es mir, das Problem zu umgehen, aber es ist sehr seltsam, weil die Kultur in der funktionierenden PS-Konsole 'en-GB' ist und die Kultur im nicht funktionierenden PowerGui Script Editor 'en-GB' ist, was nur funktioniert, wenn ich die Kultur in 'en-US' ändere.

Freaky

0voto

Yasir Punkte 4207

Das Hinzufügen der folgenden Zeile am Anfang meines Skripts hat bei mir funktioniert (aus Richards Code Snippet);

[System.Threading.Thread]::CurrentThread.CurrentCulture = New-Object "System.Globalization.CultureInfo" "en-US"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X