145920
Sep 03, 2020, updated at 12:46:33 (UTC)
994
6
0
Powershell Get-Content
Hallo Gmeinde,
hab mir da ich neu bin, angewöhnt, ein Transscript anzulegen, wenn ich mit der Powershell arbeite.
Damit kann mein Chef nachvollziehen, wenn ich ### gebaut haben soll.
Nun zur Frage. Wie kann ich dieses Script so durchforsten und die Befehle die
ich darin eingegeben habe, in ein anderes Transscript schreiben lassen? Also alle 'Get-Befehle' in
die andere Transscriptdatei schreiben lassen mit dem Namen "Get-Befehle.txt"?
Danke für die Mühe.
Gruß Saih
hab mir da ich neu bin, angewöhnt, ein Transscript anzulegen, wenn ich mit der Powershell arbeite.
Damit kann mein Chef nachvollziehen, wenn ich ### gebaut haben soll.
Nun zur Frage. Wie kann ich dieses Script so durchforsten und die Befehle die
ich darin eingegeben habe, in ein anderes Transscript schreiben lassen? Also alle 'Get-Befehle' in
die andere Transscriptdatei schreiben lassen mit dem Namen "Get-Befehle.txt"?
Danke für die Mühe.
Gruß Saih
Please also mark the comments that contributed to the solution of the article
Content-Key: 601568
Url: https://administrator.de/contentid/601568
Printed on: April 20, 2024 at 00:04 o'clock
6 Comments
Latest comment
Zitat von @145920:
Hallo Gmeinde,
hab mir da ich neu bin, angewöhnt, ein Transscript anzulegen, wenn ich mit der Powershell arbeite.
Damit kann mein Chef nachvollziehen, wenn ich ### gebaut haben soll.
Das macht Windows auch so schon im Powershell Operational-Eventlog ,Hallo Gmeinde,
hab mir da ich neu bin, angewöhnt, ein Transscript anzulegen, wenn ich mit der Powershell arbeite.
Damit kann mein Chef nachvollziehen, wenn ich ### gebaut haben soll.
https://www.crowdstrike.com/blog/investigating-powershell-command-and-sc ...
noch detaillierter mit folgender Richtlinie:
https://gpsearch.azurewebsites.net/#10927
oder der Module Logging Richtlinie, wo dann auch die Befehle aufgezeichnet werden.
https://nxlog.co/documentation/nxlog-user-guide/powershell-activity.html
Wie kann ich dieses Script so durchforsten und die Befehle die ich darin eingegeben habe, in ein anderes Transscript schreiben lassen?
Die Befehlseingaben selbst werden per Default darin nicht geloggt wenn die Befehle in Skripts laufen lässt (außer man setzt den Parameter -IncludeInvocationHeader dann werden sie von manuellen Eingaben in der Konsole geloggt), nur deren Ergebnisse/Ausgaben/Fehler. Nach Stringfolgen wie GET-* zu suchen bringt also nichts. Der Parameter -IncludeInvocationHeader loggt aber nach meiner Erfahrung nicht überall zuverlässig die Befehlseingaben, deswegen würde ich mich darauf nicht verlassen.Zitat von @145920:
Grüß dich,
dass es eine solche Möglichkeit gibt ist mir bewußt, löst aber mein Problem nicht.
Ich möchte definitiv die Transscriptdatei auslesen, die ich aufgezeichnet habe lassen,
damit ich mir jetzt eine andere Textdatei dann daraus generieren lasse, die mir alle von mir
eingegebenen Befehle in eine Datei zusammenschreibt. Damit ich so eine Art Sammlung
von meinen eingegebenen Befehlen habe. Ist für mich dann nachvollziehbarer und ich
erkenne daran, wie meine Befehle von der Qualität her besser werden. So meine Intention.
Danke
Wenn du unbedingt willst, büschen Regex für die von dir gewünschten Get-* CMDLets (ohne Aliases)Grüß dich,
dass es eine solche Möglichkeit gibt ist mir bewußt, löst aber mein Problem nicht.
Ich möchte definitiv die Transscriptdatei auslesen, die ich aufgezeichnet habe lassen,
damit ich mir jetzt eine andere Textdatei dann daraus generieren lasse, die mir alle von mir
eingegebenen Befehle in eine Datei zusammenschreibt. Damit ich so eine Art Sammlung
von meinen eingegebenen Befehlen habe. Ist für mich dann nachvollziehbarer und ich
erkenne daran, wie meine Befehle von der Qualität her besser werden. So meine Intention.
Danke
[regex]::matches((gc 'D:\Pfad\log.txt' -raw),'(?is)> (Get-[^\r\n]+)').Captures | %{$_.Groups[1].Value}
# oder auch mit select-string
Select-String 'D:\Pfad\log.txt' -Pattern '> (Get-[^\r\n]+)' -AllMatches | %{$_.Matches.Groups[1].Value}
Ist für mich dann nachvollziehbarer und ich erkenne daran, wie meine Befehle von der Qualität her besser werden. So meine Intention.
Hmm naja ob das der Qualität hilft? Da würde sicher Manual lesen mehr bringen, als den Mist von Gestern .
Und so werden auch benutzte Get-Aliase mit ausgelesen
Willst du nicht nur Get-Commands sondern stattdessen alle CMDLets und Aliase dann
$commands = ((Get-Alias -Name g*).Name + (gcm -Name 'Get-*').Name | %{[regex]::Escape($_)}) -join '|'
Select-String .\log.txt -Pattern "> (($commands)\s+[^\r\n]+)" -AllMatches | %{$_.Matches.Groups[1].Value}
$commands = ((Get-Alias -Name g*).Name + (gcm -Name 'Get-*').Name | %{[regex]::Escape($_)}) -join '|'
Select-String .\log.txt -Pattern "> (($commands)\s+[^\r\n]+)" -AllMatches | %{$_.Matches.Groups[1].Value}
Zitat von @145920:
Die Frage die sich mir jetzt stellt: Wo schreibt er die ausgelesenen Befehle jetzt hin? Ins Nichts? ;o)
Oder überseh ich wieder was, wie immer.
Das oben gibt alles für dich erst mal nur auf der Konsole aus. Naja, bischen Mitdenken und Eigeninitiative erwarte ich hier schon, das kannst du ja selbst mit Anhängen von out-file 'D:\ausgabe.txt' an die Pipeline selbst erledigen!!Die Frage die sich mir jetzt stellt: Wo schreibt er die ausgelesenen Befehle jetzt hin? Ins Nichts? ;o)
Oder überseh ich wieder was, wie immer.
........ | out-file 'D:\ausgabe.txt'
........ | set-content 'D:\ausgabe.txt'
........ > 'D:\ausgabe.txt'
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell. ...
So long, ich bin dann mal raus, oben steht alles was du dafür brauchst, viel Erfolg.
Gruß eagle.