Поиск…


Консольные приложения

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

Приложения для графического интерфейса пользователя

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)

Приложения GUI запускаются в другом процессе и немедленно возвращают управление хосту PowerShell. Иногда вам необходимо, чтобы приложение завершило обработку до следующего выполнения инструкции PowerShell. Это может быть достигнуто путем подключения вывода приложения к $ null (3) или с помощью Start-Process с помощью переключателя -Wait (5).

Консольные потоки

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)

Поток 2 содержит объекты System.Management.Automation.ErrorRecord. Обратите внимание, что некоторые приложения, такие как git.exe, используют «поток ошибок» для информационных целей, которые не обязательно являются ошибками. В этом случае лучше всего посмотреть код выхода, чтобы определить, следует ли интерпретировать поток ошибок как ошибки.

PowerShell понимает эти потоки: вывод, ошибка, предупреждение, многословность, отладка, прогресс. Нативные приложения обычно используют только эти потоки: вывод, ошибка, предупреждение.

В PowerShell 5 все потоки могут быть перенаправлены на стандартный поток вывода / успеха (6).

В более ранних версиях PowerShell только конкретные потоки могут быть перенаправлены на стандартный поток вывода / успеха (7). В этом примере «поток ошибок» будет перенаправлен на выходной поток.

Коды выхода

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

Это встроенные переменные PowerShell, которые предоставляют дополнительную информацию о самой последней ошибке. $LastExitCode - это окончательный код выхода последнего встроенного приложения, которое было выполнено. $? и $Error[0] - последняя запись об ошибке, которая была создана PowerShell.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow