Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Variable Abfrage der Eventlogs mit Powershell 1.0

Frage Entwicklung Batch & Shell

Mitglied: Feuerstein08

Feuerstein08 (Level 1) - Jetzt verbinden

06.04.2010, aktualisiert 14:58 Uhr, 7264 Aufrufe, 7 Kommentare

Ich verstehe den Unterschied nicht ...

Um Abfragen der Eventlogs flexibel zu gestalten, wollte ich die zu suchenden Events mittels einer Variable übergeben.

Beispiel:
01.
get-eventlog -logname system | where-object {($_.Eventid -eq 6005)} | select Index, EventID, Source, Message 
02.
 
03.
                        Index                       EventID Source                        Message 
04.
                        -----                       ------- ------                        ------- 
05.
                         8824                          6005 EventLog                      The Event log service was ... 
06.
                         8693                          6005 EventLog                      The Event log service was ... 
07.
                         8550                          6005 EventLog                      The Event log service was ... 
08.
                         8413                          6005 EventLog                      The Event log service was ... 
09.
                         8169                          6005 EventLog                      The Event log service was ...
Packe ich die Abfrage in eine Variable und teste damit die Ausgabe, dann sieht das so aus:
01.
$query = '($Eventid -eq 6005)' 
02.
get-eventlog -logname system | where-object { $query } |select EventID, Source, Message 
03.
 
04.
                        Index                       EventID Source                        Message 
05.
                        -----                       ------- ------                        ------- 
06.
                         9028                          7036 Service Control Manager       The description for Event ... 
07.
                         9027                            19 Microsoft-Windows-WindowsU... The description for Event ... 
08.
                         9026                          7036 Service Control Manager       The description for Event ... 
09.
                         9025                          7036 Service Control Manager       The description for Event ... 
10.
                         9024                          7040 Service Control Manager       The description for Event ... 
11.
                         9023                          4383 Microsoft-Windows-Servicing   Windows Servicing complete... 
12.
                         9022                          4373 Microsoft-Windows-Servicing   Windows Servicing successf... 
13.
...
Warum, oder besser: wie kann ich die Abfrage korrekt mit meiner Variablen gestalten?

Für jede gute Idee ist Willkommen ..
Feuerstein08
Mitglied: Snowman25
06.04.2010 um 13:50 Uhr
Hallo Feuerstein08,

Reicht dir CSCRIPT EVENTQUERY.vbs <arguments> nicht?
Wenn du das Skript nicht hast (k.A. ob das von PS 1.0 kommt oder bei XP Pro schon dabei ist etc..) kann ich es dir gerne schicken.
Normalerweise befindet es sich in %windir%/System32

Greetz
Snow
Bitte warten ..
Mitglied: Feuerstein08
06.04.2010 um 14:11 Uhr
Hallo Snow,

danke für deine Antwort, aber das ist nicht das gesuchte ...

Ich möchte diesen Teil gerne mit Powershell lösen, da dies nur ein kleiner Teil eines größeren Powershell-Skripts ist.

... und ich möchte den Unterschied - das Problem verstehen ...

Feuerstein08
Bitte warten ..
Mitglied: Snowman25
06.04.2010 um 14:42 Uhr
Zitat von Feuerstein08:
Beispiel:

get-eventlog -logname system | where-object {($_.Eventid -eq 6005)} | select Index, EventID, Source, Message
vergleiche dazu:
Zitat von Feuerstein08:
$query = '($Eventid -eq 6005)'
get-eventlog -logname system | where-object { $query } |select EventID, Source, Message

Da fehlt ein _. vor Eventid, oder?
Bitte warten ..
Mitglied: Feuerstein08
06.04.2010 um 15:52 Uhr
Hallo Snow,

schade ... ich dachte du hättest den "blöden" Fehler gefunden. Leider ist dieser Fehler nur hier durch einen "Copy & Paste" Fehler reingekommen.

Du hast aber Recht, da gehört ein "_." rein. Aber auch damit bekomme ich die falsche Ausgabe:

$query = '($_.Eventid -eq 6005)'
get-eventlog -logname system | where-object { $query } |select EventID, Source, Message

EventID Source Message
------- ------ -------
7036 Service Control Manager The description for Event ID '107374...
7036 Service Control Manager The description for Event ID '107374...
7036 Service Control Manager The description for Event ID '107374...
10029 DCOM The description for Event ID '-10737...
Bitte warten ..
Mitglied: Snowman25
06.04.2010 um 16:20 Uhr
Hallo Feuerstein08,
Habs jetzt mal ausprobiert..
Geschweifte Klammern um einen Text bewirken, dass der Inhalt NICHT ausgewertet wird. So steht bei der Ausführung eben immer noch where-object $query zwischen den Pipes.
Zwar könnte man die geschweiften Klammern auch in $query reinschreiben ($query= '{($_.Eventid-eq 6005)}'). Bringt aber nichts:
Zitat von powershell
PS U:\> get-eventlog -logname system|where-object $query|select Index, EventID, Source, Message
Where-Object : A parameter cannot be found that matches parameter name '{($_.Eventid -eq 6005)}'.
At line:1 char:42
+ get-eventlog -logname system|where-object <<<< $query|select Index, EventID, Source, Message

Kurz:
SO wird das nichts... aber da gibts sicherlich auch 'nen workaround.

Greetz
Snow
Bitte warten ..
Mitglied: Feuerstein08
07.04.2010 um 12:07 Uhr
Hallo Snow,

ich habe eine Lösung für das Problem erhalten.

Nachdem die $query zusammengebastelt ist, das ganze noch einmal "einpacken"?:

$sb = [ScriptBlock]::Create($query)

dann klappt auch die Where-Object Abfrage wieder:

get-eventlog -logname system | Where-Object $sb |select EventID, Source, Message

Was genau hinter diesem Befehl "$sb = [ScriptBlock]::Create($query)" steckt muss ich noch herausfinden (will ja schließlich auch was lernen )

Gruß
Feuerstein08
Bitte warten ..
Mitglied: Snowman25
07.04.2010 um 12:13 Uhr
Zitat von Feuerstein08:
Hallo Snow,

ich habe eine Lösung für das Problem erhalten.

schön zu hören

Was genau hinter diesem Befehl "$sb = [ScriptBlock]::Create($query)" steckt muss ich noch herausfinden (will ja
schließlich auch was lernen )

Gute Frage. ich weiß selbst nicht, was das nun genau bewirkt... Bin nicht so der Powershell-Profi bzw. überhaupt so Powershellbenutzer. Aber ein paar debugging-skills und die Fähigkeit zu lesen hilft oft schon wunder

Gruß
Feuerstein08

Gruß
Snowman25
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Dell Garantie Abfrage per PowerShell Script (5)

Frage von evilknievel zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Access Abfrage auslesen? (2)

Frage von Druide83 zum Thema Batch & Shell ...

Windows Server
gelöst Powershell - Globale AD Abfrage (9)

Frage von skahle85 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...