Я отлаживаю скрипт powershell в ISE и там вызываю утилиту sysinternals pskill.
По какой-то причине PowerShell открывает следующий диалог:
Почему? Как я могу настроить его, чтобы он не отображал диалоговое окно, а просто запускал сценарий, как я намереваюсь?
РЕДАКТИРОВАТЬ 1
Проблема воспроизводится очень легко:
- Выполнить ise -noprofile
- Запуск командной строки ise pskill -h
Вот результат:
Хотя диалоговое окно отсутствует, но есть вывод ошибок, который, как я полагаю, является причиной появления диалогового окна в моем другом сценарии. Итак, вопрос в том, что является причиной вывода ошибки?
Похоже, что pskill отправляет часть своего экрана справки на stderr, действительно, обратите внимание:
C:\Dayforce\utils> .\pskill.exe -h
PsKill v1.15 - Terminates processes on local or remote systems
Copyright (C) 1999-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
Usage: pskill [-t] [\\computer [-u username [-p password]]] <process ID | name>
-t Kill the process and its descendants.
-u Specifies optional user name for login to
remote computer.
-p Specifies optional password for user name. If you omit this
you will be prompted to enter a hidden password.
C:\Dayforce\utils> .\pskill.exe -h 2> $null
Usage: pskill [-t] [\\computer [-u username [-p password]]] <process ID | name>
-t Kill the process and its descendants.
-u Specifies optional user name for login to
remote computer.
-p Specifies optional password for user name. If you omit this
you will be prompted to enter a hidden password.
C:\Dayforce\utils>
Итак, похоже, что у меня была проблема только с pskill, потому что он выводит на stderr, а ISE считает хорошим поводом открыть диалог. Я исправляю это с помощью параметра командной строки -nobanner.
а как это вообще исправить? Я не хочу, чтобы ISE открывал какой-либо диалог, если команда выводит stderr, что само по себе может не быть хорошим вкусом, но не означает, что есть ошибка.