Szukaj…


Aplikacje konsolowe

PS> console_app.exe
PS> & console_app.exe
PS> Start-Process console_app.exe

Aplikacje GUI

PS> gui_app.exe (1)
PS> & gui_app.exe (2)
PS> & gui_app.exe | Out-Null (3)
PS> Start-Process gui_app.exe (4)
PS> Start-Process gui_app.exe -Wait (5)

Aplikacje GUI uruchamiają się w innym procesie i natychmiast zwracają kontrolę nad hostem PowerShell. Czasami aplikacja musi zakończyć przetwarzanie przed wykonaniem następnej instrukcji PowerShell. Można to osiągnąć, przesyłając dane wyjściowe aplikacji do $ null (3) lub używając Start-Process z przełącznikiem -Wait (5).

Strumienie konsoli

PS> $ErrorActionPreference = "Continue" (1)
PS> & console_app.exe *>&1 | % { $_ } (2)
PS> & console_app.exe *>&1 | ? { $_ -is [System.Management.Automation.ErrorRecord] } (3)
PS> & console_app.exe *>&1 | ? { $_ -is [System.Management.Automation.WarningRecord] } (4)
PS> & console_app.exe *>&1 | ? { $_ -is [System.Management.Automation.VerboseRecord] } (5)
PS> & console_app.exe *>&1 (6)
PS> & console_app.exe 2>&1 (7)

Strumień 2 zawiera obiekty System.Management.Automation.ErrorRecord. Należy pamiętać, że niektóre aplikacje, takie jak git.exe, używają „strumienia błędów” w celach informacyjnych, które niekoniecznie są błędami. W takim przypadku najlepiej spojrzeć na kod wyjścia, aby ustalić, czy strumień błędów należy interpretować jako błędy.

PowerShell rozumie następujące strumienie: Wyjście, Błąd, Ostrzeżenie, Pełne, Debugowanie, Postęp. Aplikacje macierzyste zwykle używają tylko tych strumieni: Wyjście, Błąd, Ostrzeżenie.

W PowerShell 5 wszystkie strumienie mogą być przekierowywane do standardowego strumienia wyjściowego / powodzenia (6).

We wcześniejszych wersjach programu PowerShell tylko określone strumienie można przekierowywać do standardowego strumienia wyjściowego / powodzenia (7). W tym przykładzie „strumień błędów” zostanie przekierowany do strumienia wyjściowego.

Kody wyjścia

PS> $LastExitCode
PS> $?
PS> $Error[0]

Są to wbudowane zmienne PowerShell, które dostarczają dodatkowych informacji o ostatnim błędzie. $LastExitCode jest ostatnim kodem zakończenia ostatniej natywnej aplikacji, która została wykonana. $? a $Error[0] to ostatni rekord błędu wygenerowany przez PowerShell.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow