Benutzer mit den meisten Antworten
Ausgabe einzelner Werte des "Replacementstrings" eines Events

Frage
-
Hallo zusammen,
meine derzeitige Herausforderung ist es, dass ich gerne die Events der gesperrten Konten in der AD ausgeben möchte. Hierzu mache ich folgendes (aus Vereinfachungsgründen nur mit dem letzten Ereignis).
# Alle Domänencontroller in der Domäne $LocalDCs = ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).DomainControllers.Name # erstmal nur das letzte Event Get-EventLog -ComputerName $LocalDCs -LogName Security -InstanceID "4740" -newest 1 | Select-Object MachineName, EventID, Source, TimeGenerated, Replacementstrings
Soweit funktioniert das, als Ergebnis erhalte ich
MachineName : dc01.lab.dom EventID : 4740 Source : Microsoft-Windows-Security-Auditing TimeGenerated : 27.11.2012 09:34:26 ReplacementStrings : {user.albert, VM-LAB-CL1, S-1-5-21-287256587-918758407-1540833222-5839, S-1-5-18...}
Nun möchte ich die ersten zwei Werte des "Replacementstrings" ausgeben, anstatt des kompletten Inhalt des Arrays.
Die Idee:
Get-EventLog -ComputerName $LocalDCs -LogName Security -InstanceID "4740" -newest 1 | Select-Object MachineName, EventID, Source, TimeGenerated, Replacementstrings[0,1]
Was allerdings mit einer Fehlermeldung abgebrochen wird
"Select-Object : Das angegebene Platzhaltermuster ist ungültig: Replacementstrings[0..."
Die Eingabe "Replacementstrings[0] oder [1]" führt auch nicht zum Ziel, da bleiben die Felder Leer.
Ich vermute, dass das Array in der Select-Object Anweisung nicht aufgelöst werden kann. Kennt Ihr einen Weg dies zu tun?
Danke im Voraus für eure Mühen
Gruß Alex
- Bearbeitet Alexander Kellmann Dienstag, 27. November 2012 19:01
Antworten
-
Ungetestet:
Get-EventLog -ComputerName $LocalDCs -LogName Security -InstanceID "4740" -newest 1 |
Select-Object MachineName, EventID, Source, TimeGenerated, Replacementstrings[0],Replacementstrings[1]
Select -Object erstellt ein Objekt jedes Attribut das Select-Object auswählt ist dann ein Property des neuen Objektes.
Deshalb ist es sinnvoll den Properties in deinem Objekt einen eindeutigen Namen zu geben.
Wenn du das sauber mit Namen machen willst geht das so:
Get-EventLog -ComputerName $LocalDCs -LogName Security -InstanceID "4740" -newest 1 | Select-Object MachineName, EventID, Source, TimeGenerated, @{Name='User';Expression={$_.Replacementstrings[0]}},@{Name='ComputerName';Expression={$_.Replacementstrings[1]}}
Die Expression ist ein Scriptblock, das heißt, du kannst da ein ganzes Skript reinhauen ;-)
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!
- Als Antwort markiert Alexander Kellmann Mittwoch, 28. November 2012 08:59
- Bearbeitet Peter Kriegel Mittwoch, 28. November 2012 10:05 Bug entfernt
Alle Antworten
-
Ungetestet:
Get-EventLog -ComputerName $LocalDCs -LogName Security -InstanceID "4740" -newest 1 |
Select-Object MachineName, EventID, Source, TimeGenerated, Replacementstrings[0],Replacementstrings[1]
Select -Object erstellt ein Objekt jedes Attribut das Select-Object auswählt ist dann ein Property des neuen Objektes.
Deshalb ist es sinnvoll den Properties in deinem Objekt einen eindeutigen Namen zu geben.
Wenn du das sauber mit Namen machen willst geht das so:
Get-EventLog -ComputerName $LocalDCs -LogName Security -InstanceID "4740" -newest 1 | Select-Object MachineName, EventID, Source, TimeGenerated, @{Name='User';Expression={$_.Replacementstrings[0]}},@{Name='ComputerName';Expression={$_.Replacementstrings[1]}}
Die Expression ist ein Scriptblock, das heißt, du kannst da ein ganzes Skript reinhauen ;-)
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!
- Als Antwort markiert Alexander Kellmann Mittwoch, 28. November 2012 08:59
- Bearbeitet Peter Kriegel Mittwoch, 28. November 2012 10:05 Bug entfernt
-
Hallo,
das war der richtige Hinweis, der mich zur Lösung geführt hat. In Deinem Vorschlag fehlten nur noch bei den Expression das $_ -> dann funktioniert es.
Get-EventLog -ComputerName $LocalDCs -LogName Security -InstanceID "4740" -newest 1 | Select-Object MachineName, EventID, Source, TimeGenerated, @{Name='User';Expression={$_.Replacementstrings[0]}},@{Name='ComputerName';Expression={$_.Replacementstrings[1]}}
Klasse Danke
Gruß Alex
- Bearbeitet Alexander Kellmann Mittwoch, 28. November 2012 09:13
-
Hallo,
das war der richtige Hinweis, der mich zur Lösung geführt hat. In Deinem Vorschlag fehlten nur noch bei den Expression das $_ -> dann funktioniert es.
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!