2012-04-12 21 views
1

Wenn ich den folgenden Code ausführen, erhalte ich die Nachricht "kann 'System.Object []' nicht in den Typ 'System.String' konvertieren ". Wie übergebe ich die Ereignisprotokollliste zurück an get-eventlog?Powershell: 'System.Object []' kann nicht in den Typ 'System.String' konvertiert werden

$EventLogList = Get-EventLog | Select-Object -ExpandProperty log 
Get-evenlog -log $eventloglist 

Get-EventLog: Kann nicht konvertieren 'System.Object []' auf die Art 'System.String' geforderten Parameter 'LogName'.

Ihre Hilfe ist willkommen

+0

Sie haben einen Tippfehler in der zweiten Zeile. Es sollte "eventlog" statt "evenlog" sein. –

+0

Und es ist nicht klar, was Ihre Absicht ist. Was versuchst du genau zu erreichen? –

+0

Ach, tut mir leid. Ich möchte alle Ereigniseinträge aus allen herkömmlichen Protokollen abrufen. z.B. Anwendung, HardwareEvents, Internet Explorer, Schlüsselverwaltungsdienst, Sicherheit, System ect – resolver101

Antwort

3

LogName ist ein obligatorischer Parameter Get-EventLog und Sie haben es zu versorgen, wenn Sie eine Liste zu tun mit -list versuchen. Außerdem erwartet es eine Zeichenfolge und die zweite Zeile gibt den Fehler, da Sie ein Array übergeben.

Abgesehen davon ist es auch nicht klar, was Sie mit den Aussagen zu tun versuchen.

Ich nehme an, Sie wollen so etwas wie:

get-eventlog -list | %{ get-eventlog -log $_.log } 
+0

Danke. Das Array verursachte mir das Problem. Ich erstelle eine foreach, um jedes Protokoll einzeln durchlaufen zu können. – resolver101