Главная

Friday, 1 December 2017

Запуск скрипта PowerShell в скрытом режиме.

Всем привет.

Частенько по работе администратора нужно запустить скрипт PowerShell в скрытом режиме, незаметно для пользователя, который работает  в текущем сеансе.

Способ первый.

Начиная со 2-й версии PowerShell при запуске можно использовать параметр -WindowStyle  со значением Hidden. Это позволяет осуществить запуск в скрытом режиме, без открытия консоли. Предположим, что у меня в папке C:\Temp лежит скрипт hello.ps1, который надо скрытно выполнить при входе пользователя. Для этого используем следующую команду:

powershell.exe -nologo -noninteractive -windowStyle hidden -command "C:\Temp\hello.ps1"

Теоретически скрипт должен выполниться в фоне, незаметно для пользователя. Но на практике этот способ работает не всегда, в некоторых случаях во время выполнения скрипта окно PowerShell остается открытым. Поэтому смотрим следующий способ.

Способ второй.

Назад в прошлое. Скрыть запуск PowerShell можно, малость неожиданно, с помощью VBScript. Для этого создаем vbs-файл следующего содержания:

command = "powershell.exe -nologo -noninteractive -command C:\Temp\hello.ps1"
 set shell = CreateObject("WScript.Shell")
 shell.Run command,0, false

Параметр 0 в скрипте означает запуск  в скрытом виде, false - не ждать окончания выполнения команды. Теперь для запуска PowerShell скрипта надо запустить этот vbs-файл и он тихо выполнится.

Способ третий.

Выполнить вызов скрипта powershell.exe -nologo -noninteractive -command C:\Temp\hello.ps1"
из командного файла с помощью MS SCCM. Такой тихий режим запуска используется в MS SCCM очень часто. Причем это можно сделать даже без пользовательского логина, т.е. достаточно включить ПК.


Опыт показывает что первые два способа не могут полностью скрыть запуск скрипта. При запуске все равно видно всплывающее окно. Третий способ не бесплатный, но работает отлично.

На сегодня все.

No comments:

Post a Comment

А что вы думаете по этому поводу?