Ich habe ein PowerShell-Skript, für das ich die Ausgabe in eine Datei umleiten möchte. Das Problem ist, dass ich die Art und Weise, wie dieses Skript aufgerufen wird, nicht ändern kann. Also kann ich nicht tun:
.\MyScript.ps1 > output.txt
Wie leite ich die Ausgabe eines PowerShell-Skripts während seiner Ausführung um?
powershell
scripting
stdout
Martin
quelle
quelle
Microsoft hat auf der Connections-Website von Powershell (15.02.2012, 16:40 Uhr) angekündigt, dass in Version 3.0 die Umleitung als Lösung für dieses Problem erweitert wurde.
Weitere Informationen und Beispiele finden Sie im Hilfeartikel "about_Redirection".
quelle
Verwenden:
quelle
Ich nehme an, Sie können ändern
MyScript.ps1
. Versuchen Sie dann, es so zu ändern:Ich habe dies gerade mit PowerShell 3 versucht. Sie können alle Umleitungsoptionen wie in Nathan Hartleys Antwort verwenden .
quelle
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
Aber Powershell ist wirklich hässlich, wenn Sie die Ausgabe präzise steuern müssen.Eine mögliche Lösung, wenn Ihre Situation dies zulässt:
Erstellen Sie eine neue MyScript.ps1, die wie folgt aussieht:
. \ TheRealMyScript.ps1> output.txt
quelle
quelle
Vielleicht möchten Sie sich das Cmdlet Tee-Object ansehen . Sie können die Ausgabe an Tee weiterleiten und sie wird in die Pipeline und auch in eine Datei geschrieben
quelle
Wenn Sie alle Ausgaben direkt in eine Datei umleiten möchten, versuchen Sie Folgendes
*>>
:Da dies eine direkte Weiterleitung in eine Datei ist, wird sie nicht an die Konsole ausgegeben (häufig hilfreich). Wenn Sie die Konsolenausgabe wünschen, kombinieren Sie alle Ausgaben mit
*&>1
und leiten Sie dann mitTee-Object
:Ich glaube, diese Techniken werden in PowerShell 3.0 oder höher unterstützt. Ich teste auf PowerShell 5.0.
quelle
Wenn Sie dies über die Befehlszeile tun möchten und nicht in das Skript selbst integriert sind, verwenden Sie:
quelle
Um dies in Ihr Skript einzubetten, können Sie dies folgendermaßen tun:
Das sollte den Trick machen.
quelle