Как можно запустить сценарий PowerShell, не отображая окно или какой-либо другой знак для пользователя?
Другими словами, сценарий должен работать в фоновом режиме без каких-либо сигналов для пользователя.
Дополнительный балл за ответ, который не использует сторонние компоненты :)
windows
powershell
scripting
batch-file
silent
Томас Братт
источник
источник
Ответы:
Вы можете запустить его так (но на какое-то время отображаются окна):
Или вы используете вспомогательный файл, который я создал, чтобы избежать окна PsRun.exe, которое делает именно это. Вы можете скачать исходный код и exe-файл Запускать запланированные задачи с помощью графического интерфейса WinForm в PowerShell. . Использую для плановых задач.
Отредактировано: как заметил Марко, этот параметр -windowstyle доступен только для V2.
источник
-WindowStyle Hidden
если задача не установленаRun whether user is logged on or not
на вкладке «Общие» в разделе «Параметры безопасности».У меня была такая же проблема. Я узнал, что если вы перейдете к задаче в планировщике задач , в которой запущен сценарий powershell.exe , вы можете щелкнуть « Запускать независимо от того, вошел ли пользователь в систему или нет », и это никогда не отобразит окно PowerShell при выполнении задачи.
источник
Вы можете использовать расширения сообщества PowerShell и сделать следующее:
Вы также можете сделать это с помощью VBScript:
http://blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell/Планирование скрытых задач PowerShell (Интернет-архив)
Больше удовольствия с запланированной PowerShell (Интернет-архив)
(Через эту ветку форума .)
источник
Вот подход, который не требует аргументов командной строки или отдельной программы запуска. Это не совсем невидимо, потому что окно на мгновение отображается при запуске. Но затем он быстро исчезает. Если все в порядке, это, я думаю, самый простой подход, если вы хотите запустить свой скрипт двойным щелчком в проводнике или с помощью ярлыка меню «Пуск» (включая, конечно, подменю «Запуск»). И мне нравится, что это часть кода самого скрипта, а не что-то внешнее.
Поместите это в начало вашего скрипта:
источник
Вот однострочник:
Хотя при этом возможно очень короткое мигание окна, это должно быть редкостью.
источник
У меня возникла эта проблема при запуске из C #, в Windows 7 служба «Обнаружение интерактивных служб» выскакивала при запуске скрытого окна PowerShell в качестве учетной записи SYSTEM.
Использование параметра CreateNoWindow предотвратило появление предупреждения службы ISD.
источник
Я думаю, что лучший способ скрыть экран консоли PowerShell, когда вы запускаете фоновые скрипты, - это этот код (« Bluecakes ответ ").
Я добавляю этот код в начало всех моих сценариев PowerShell, которые мне нужно запускать в фоновом режиме.
источник
ps1 скрыт от планировщика заданий и ярлыка тоже
источник
Я создал небольшой инструмент, передающий вызов любому консольному инструменту, который вы хотите запустить без окон, через исходный файл:
https://github.com/Vittel/RunHiddenConsole
После компиляции просто переименуйте исполняемый файл в «<targetExecutableName> w.exe» (добавьте «w») и поместите его рядом с исходным исполняемым файлом. Затем вы можете вызвать eG powershellw.exe с обычными параметрами, и окно не появится.
Если у кого-то есть идея, как проверить, ожидает ли созданный процесс ввода, я буду рад включить ваше решение :)
источник
MessageBox
без какой-либо вспышки окна при запуске (требуется EXE, скомпилированный как Winexe, а не консольное приложение, и требуется, чтобы планировщик заданий был установлен на «Запускать только тогда, когда пользователь вошел в систему. on ", чтобы диалоговые окна отображались в текущем сеансе рабочего стола.) Спасибо за реализацию, powershellw.exe уже много лет находится в моем списке желаний!Вот рабочее решение в Windows 10, которое не включает сторонних компонентов. Он работает, заключая сценарий PowerShell в VBScript.
Шаг 1: нам нужно изменить некоторые функции Windows, чтобы VBScript мог запускать PowerShell и открывать файлы .ps1 с помощью PowerShell по умолчанию.
-перейдите к запуску и введите "regedit". Нажмите ОК, а затем дайте ему поработать.
-вставьте этот путь «HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell» и нажмите ввод.
-Теперь откройте запись справа и измените значение на 0.
-открыть PowerShell от имени администратора и ввести «Set-ExecutionPolicy -ExecutionPolicy RemoteSigned», нажать клавишу ВВОД и подтвердить изменение с помощью «y», а затем введите.
Шаг 2: Теперь мы можем начать упаковывать наш скрипт.
-сохраните ваш скрипт Powershell как файл .ps1.
-создайте новый текстовый документ и вставьте этот скрипт.
-Теперь измените путь к файлу на местоположение вашего сценария .ps1 и сохраните текстовый документ.
-Теперь щелкните файл правой кнопкой мыши и перейдите к переименованию. Затем измените расширение имени файла на .vbs и нажмите клавишу ВВОД, а затем нажмите ОК.
СДЕЛАНО! Если вы сейчас откроете .vbs, вы не увидите консольного окна, пока ваш скрипт работает в фоновом режиме.
не забудьте проголосовать, если это сработало для вас!
источник
Вот забавная демонстрация управления различными состояниями консоли, включая свертывание и скрытие.
источник