Mam skrypt PowerShell, dla którego chciałbym przekierować dane wyjściowe do pliku. Problem polega na tym, że nie mogę zmienić sposobu, w jaki ten skrypt jest wywoływany. Więc nie mogę zrobić:
.\MyScript.ps1 > output.txt
Jak przekierować dane wyjściowe skryptu PowerShell podczas jego wykonywania?
powershell
scripting
stdout
Jaskółka oknówka
źródło
źródło
Microsoft ogłosił na stronie internetowej Powershell Connections (2012-02-15 o 16:40), że w wersji 3.0 rozszerzyli przekierowanie jako rozwiązanie tego problemu.
Szczegółowe informacje i przykłady można znaleźć w artykule pomocy „about_Redirection”.
źródło
Posługiwać się:
źródło
Rozumiem, że możesz to zmodyfikować
MyScript.ps1
. Następnie spróbuj to zmienić w następujący sposób:Właśnie próbowałem tego z PowerShell 3. Możesz użyć wszystkich opcji przekierowania, jak w odpowiedzi Nathana Hartleya .
źródło
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
ale PowerShell jest naprawdę brzydki, jeśli chcesz precyzyjnie kontrolować wyjście.Jedno możliwe rozwiązanie, jeśli pozwala na to Twoja sytuacja:
Utwórz nowy MyScript.ps1, który wygląda następująco:
. \ TheRealMyScript.ps1> output.txt
źródło
źródło
Możesz rzucić okiem na obiekt cmdlet Tee-Object . Możesz przesłać dane wyjściowe do Tee, a ono zapisze w potoku, a także w pliku
źródło
Jeśli chcesz prosto przekierować wszystkie dane wyjściowe do pliku, spróbuj użyć
*>>
:Ponieważ jest to proste przekierowanie do pliku, nie będzie ono wysyłane do konsoli (często pomocne). Jeśli potrzebujesz danych wyjściowych konsoli, połącz wszystkie dane wyjściowe z
*&>1
, a następnie potokuj zTee-Object
:Wierzę, że te techniki są obsługiwane w PowerShell 3.0 lub nowszym; Testuję na PowerShell 5.0.
źródło
Jeśli chcesz to zrobić z wiersza poleceń i nie wbudować w sam skrypt, użyj:
źródło
Aby osadzić to w skrypcie, możesz to zrobić w następujący sposób:
To powinno wystarczyć.
źródło