- Сообщения
- 26,130
- Решения
- 13
- Реакции
- 13,891
В Windows скрипты PowerShell (с расширением .PS1) по умолчанию не связаны с исполняемым файлом PowerShell.exe. При двойном щелчке по PS1-файлу вместо выполнения скрипта открывается окно текстового редактора (например, Notepad). Для запуска PS1-скрипта в среде PowerShell из проводника требуется выбрать пункт "Run With PowerShell" в контекстном меню. Однако такой запуск выполняется только в рамках пользовательской сессии, без прав администратора.
Для других типов скриптов, таких как .bat или .cmd, предусмотрен отдельный пункт меню "Run As Administrator". В случае с PowerShell для выполнения скрипта с повышенными правами необходимо вручную открыть консоль PowerShell с правами администратора и указать полный путь к файлу. Такой подход явно неудобен и требует дополнительного времени.

Теперь, если щелкнуть ПКМ по любому *.PS1 файлу, в контекстном меню можно выбрать пункт Run as administrator

В случае если скрипт отрабатывает быстро, пользователь успевает только увидеть появившееся и быстро исчезнувшее окно PowerShell. А что делать, если результат выполнения скрипта должен остаться на экране для просмотра пользователем?
Чтобы после окончания работы скрипта, окно консоли PowerShell не закрывалось, необходимо добавить в строку параметр -NoExit:
Источник
Для других типов скриптов, таких как .bat или .cmd, предусмотрен отдельный пункт меню "Run As Administrator". В случае с PowerShell для выполнения скрипта с повышенными правами необходимо вручную открыть консоль PowerShell с правами администратора и указать полный путь к файлу. Такой подход явно неудобен и требует дополнительного времени.
Добавление пункта "Run as administrator" в контекстное меню для PS1-скриптов
- Откройте редактор реестра, введя regedit.exe в строку поиска Windows и запустив его.
- Перейдите в ветку HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\shell
- Создайте новый подраздел с именем runas и откройте его.
- Внутри раздела runas создайте пустой строковый параметр (String Value) с именем HasLUAShield. Этот параметр добавляет значок UAC (User Account Control) в контекстное меню проводника.
- В разделе runas создайте вложенный подраздел с именем command.
- Установите значение параметра Default в разделе command следующим образом:
Код:
powershell.exe "-Command" "if((Get-ExecutionPolicy ) -ne 'Bypass') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"

Теперь, если щелкнуть ПКМ по любому *.PS1 файлу, в контекстном меню можно выбрать пункт Run as administrator

В случае если скрипт отрабатывает быстро, пользователь успевает только увидеть появившееся и быстро исчезнувшее окно PowerShell. А что делать, если результат выполнения скрипта должен остаться на экране для просмотра пользователем?
Чтобы после окончания работы скрипта, окно консоли PowerShell не закрывалось, необходимо добавить в строку параметр -NoExit:
Код:
powershell.exe -NoExit "-Command" "if((Get-ExecutionPolicy ) -ne 'Bypass') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"
Источник
Последнее редактирование: