2016-04-21 8 views
0

Also für dieses Skript von @Frode F gegeben. Wie würde ich es noch weiter analysieren?
Hier ist, was @Frode F. gab mir -PowerShell Parsing Select-Objekt noch weiter

Get-WinEvent -FilterHashtable @{ 
LogName = 'Security' 
ID = 4688 
} | Select-Object TimeCreated,@{name='NewProcessName';expression={ $_.Properties[5].Value }}, @{name='CommandLine';expression={ $_.Properties[8].Value }} 

Nun, wie ich es analysieren unten bestimmte Ereignisse zu entfernen? Hier ist mein Code -

$search = @("C:\*") 
Get-WinEvent -FilterHashtable @{ 
LogName = 'Security' 
ID = 4688 
} | Select-Object TimeCreated,@{name='NewProcessName';expression={ $_.Properties[5].Value }}, @{name='CommandLine';expression={ $_.Properties[8].Value } 
} | Where-Object -FilterScript { $_.Properties[8].Value -notlike $search} 

Dies hält mich nicht in ein Null-Array indizieren kann.

+0

'Select' Anweisung sollte fast immer der letzte Befehl in einer Pipeline sein ... es sei denn, Sie möchten die Ergebnisse in eine Datei exportieren, die ....' command | ist Wo-Objekt | select-object' – Kiran

+0

Sie könnten '$ _. Properties [8] ....' in einer Where-Anweisung vor 'select-object' verwenden, wie @Negorath und @kiran erklären, aber ich würde es tatsächlich' select | wo, wie du es getan hast, um zu vermeiden, diesen schrecklichen '..Propeties [8] ....' Code zweimal zu schreiben. :-) –

Antwort

2

Das Cmdlet Where-Object arbeitet mit den Ergebnissen aus dem vorhergehenden Cmdlet Select-Object.

Versuchen ersetzen:

$_.Properties[8].Value -notlike $search 

mit:

$_.CommandLine -notlike $search 

Edit: @Negorath und @Kiran korrekt sind. Sie erhalten wahrscheinlich eine bessere Lösung, wenn Sie die Pipeline neu anordnen, um vor zu filtern, die Sie auswählen.

+0

Das würde funktionieren, aber ich würde alternativ vorschlagen, das 'Where-Object -FilterScript {$ _. Properties [8] .Value -nicht like $ search}' 'vor' Select-Object' in der Pipeline zu verschieben. – Negorath

+0

Das funktioniert definitiv, nicht realisiert, dass CommandLine die Variable werden würde. Ich habe vorher versucht, den Where-Object-Filter vor Select-Object zu setzen und ich konnte es nicht zum Laufen bringen. Ich nahm an, dass von Get-WinEvent nichts zurückgegeben wurde, das ich verwenden könnte. Danke vielmals!! – Dpitt1968