Разрешить выполнение сценариев PowerShell Windows 10

Обновлено: 30.06.2024

Если вы хотите включить или выключить выполнение сценария Windows PowerShell в Windows 10, следуйте этому пошаговому руководству. Мы будем использовать редактор реестра и редактор локальной групповой политики, чтобы включить или отключить эту функцию.

Windows PowerShell — это важный и удобный инструмент, включенный в операционную систему Windows. В основном существует два типа сценариев: подписанные доверенным издателем и локальные сценарии. Локальные сценарии — это то, что вы создаете на своем персональном компьютере, а другой сценарий — это то, что доверенный издатель подписал для выполнения определенной задачи.

Включить или отключить выполнение сценария Windows PowerShell

  1. Найдите gpedit.msc в поле поиска на панели задач.
  2. Нажмите Изменить групповую политику в результатах поиска.
  3. Перейдите к Windows PowerShell в разделе Конфигурация компьютера.
  4. Дважды щелкните Включить выполнение сценария.
  5. Выберите параметр Включено.
  6. Выберите Политику выполнения из раскрывающегося списка.
  7. Выберите параметр Отключено, чтобы отключить выполнение скрипта.
  8. Нажмите Применить и ОК.

Давайте подробно рассмотрим эти шаги.

Сначала вам нужно будет открыть на своем компьютере редактор локальной групповой политики. Для этого найдите gpedit.msc в поле поиска на панели задач и нажмите Изменить групповую политику в результатах поиска. После открытия этого инструмента перейдите по следующему пути:

В папке Windows PowerShell вы увидите параметр «Включить выполнение сценария». Дважды щелкните по нему и выберите параметр «Включено».

Включить или отключить выполнение сценария Windows PowerShell

  • Разрешить только подписанные сценарии
  • Разрешить локальные скрипты и скрипты с удаленной подписью
  • Разрешить все сценарии

Если вы хотите отключить выполнение сценария в Windows PowerShell, выберите параметр «Отключено».

В любом случае нажмите «Применить» и «ОК», чтобы сохранить изменения.

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

Включить или отключить выполнение сценария Windows PowerShell с помощью реестра

Чтобы включить или отключить выполнение сценария Windows PowerShell, выполните следующие действия:

  1. Нажмите Win+R.
  2. Введите regedit и нажмите кнопку Ввод.
  3. Нажмите кнопку Да.
  4. Перейдите в Windows внутри ключа HKLM.
  5. Щелкните правой кнопкой мыши Windows > Создать > Ключ.
  6. Назовите его PowerShell.
  7. Щелкните правой кнопкой мыши PowerShell > Новое значение DWORD (32-разрядное).
  8. Назовите его EnableScripts.
  9. Дважды щелкните по нему, чтобы установить значение данных как 1.
  10. Щелкните правой кнопкой мыши PowerShell > Создать > Строковое значение.
  11. Назовите его как ExecutionPolicy.
  12. Дважды щелкните по нему, чтобы установить данные значения, как указано ниже.

Если вы хотите узнать больше, продолжайте читать.

Чтобы начать, нажмите Win+R, введите regedit и нажмите кнопку Enter. Если вы видите приглашение UAC, нажмите кнопку «Да», чтобы открыть редактор реестра на вашем компьютере. После этого перейдите по следующему пути-

Щелкните правой кнопкой мыши Windows, выберите "Создать" > "Ключ" и назовите его PowerShell.

Как включить или выключить выполнение сценария Windows PowerShell

Вам нужно будет создать значение DWORD (32-разрядное) и значение String в ключе PowerShell. Для этого щелкните правой кнопкой мыши PowerShell > Создать > Значение DWORD (32-разрядное) и назовите его EnableScripts.

Как включить или выключить выполнение сценария Windows PowerShell

Дважды щелкните EnableScripts, чтобы установить для параметра Value data значение 1 или 0. Если вы хотите включить эту функцию, установите значение 1. В противном случае установите значение 0.

Как включить или выключить выполнение сценария Windows PowerShell

Теперь вам нужно установить политику выполнения. Для этого щелкните правой кнопкой мыши PowerShell > Создать > Строковое значение и назовите его ExecutionPolicy.

Как включить или выключить выполнение скрипта Windows PowerShell

  • AllSigned: разрешить только подписанные скрипты
  • RemoteSigned: разрешить локальные и удаленно подписанные сценарии.
  • Неограниченно: разрешить все сценарии

Как включить или выключить выполнение сценария Windows PowerShell

Наконец нажмите кнопку ОК, чтобы сохранить изменения.

Вот и все! Надеюсь, это поможет.

Дата: 3 декабря 2020 г. Метки: PowerShell

Похожие записи


Команда Install-Module была найдена в модуле PowerShellGet, но модуль не может быть загружен

список запущенных сервисов

Как экспортировать список служб Windows с помощью командной строки

PowerShell Получить -Appxpackage не работает

Доступ к PowerShell Get-Appxpackage запрещен, не распознан или не работает

[электронная почта защищена]


сообщить об этом объявлении

Мы покажем вам, как включить сценарии PowerShell в Windows 10, настроив политику выполнения с помощью командной строки.

PowerShell — это мощный инструмент, который многие, в том числе и я, не используют в полной мере. Вот почему большинство из нас полагаются на сценарии PowerShell, созданные другими, но это может иметь свои собственные препятствия. Часто вы будете видеть такие ошибки, как «PowerShell: выполнение сценариев отключено в этой системе». Чтобы включить сценарии PowerShell в Windows 10, необходимо сначала установить политику выполнения.

Этот дополнительный шаг предназначен для защиты от злоумышленников с вредоносными сценариями, и его следует переключать только в том случае, если вы доверяете его источнику. Можно изменить выполнение скрипта PowerShell с помощью редактора групповой политики и реестра, но самый простой и разумный способ — через сам PowerShell. Поэтому сегодня мы сосредоточимся только на том, как изменить политику выполнения PowerShell через командную строку.

Объяснение политик выполнения PowerShell и значений области действия

PowerShell имеет пять политик выполнения; AllSigned, Bypass, RemoteSigned, Restricted и Unrestricted. Он также имеет три значения «области действия», которые определяют, насколько далеко зайдут изменения выполнения скрипта PowerShell. Вы можете прочитать обо всех них в таблицах ниже:

Политика выполнения Описание
По умолчанию Задает для Windows политику выполнения по умолчанию — Restricted для обычных установок Windows и RemoteSigned для серверных установок.
Restricted Политика выполнения по умолчанию для Windows 10. Вы не можете запускать какие-либо сценарии PowerShell, а PowerShell установлен в интерактивный режим, поэтому вы можете выполнять только отдельные команды.
RemoteSigned По умолчанию для серверных установок. Вы можете запускать загруженные сценарии PowerShell, но они должны быть подписаны доверенным издателем. Незагруженные сценарии PowerShell не нуждаются в подписи.
AllSigned Вы можете запускать сценарии PowerShell только от доверенного издателя, независимо от того, откуда они пришли.
Неограниченно Вы можете запускать неподписанные сценарии, но перед попыткой запускать файлы из Интернета.
Обход Наименее строгая настройка. Запустите любой скрипт без предупреждений или подсказок. Не рекомендуется ни для чего, кроме тестовых машин.

Область Описание
Процесс Установите политику выполнения для текущего экземпляра Windows PowerShell.
CurrentUser Политика выполнения устанавливается только для текущего пользователя и сохраняется в разделе реестра HKEY_CURRENT_USER.
LocalMachine
AllSigned Устанавливает политику для всех на машине с помощью ключа HKEY_LOCAL_MACHINE.

Помните эти значения при настройке политики выполнения, так как выбор неправильного может привести к непредвиденным последствиям для безопасности.

Как проверить политику выполнения PowerShell

Прежде чем что-либо менять, рекомендуется определить, какая политика выполнения уже используется на вашем ПК. Это также может помочь после внесения изменений в целях проверки.

Нажмите «Windows + X», чтобы открыть контекстное меню «Пуск», и нажмите «Windows PowerShell (Admin)».

В главном окне PowerShell введите следующее и нажмите Enter:

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

Как настроить политику выполнения PowerShell на RemoteSigned

Существует быстрый и удобный в пользовательском интерфейсе способ включить запуск сценариев PowerShell с помощью политики RemoteSigned через настройки Windows.

    Перейдите в настройки обновлений и безопасности

Нажмите «Windows + I», чтобы открыть настройки, и нажмите «Обновление и безопасность».

На левой боковой панели нажмите «Для разработчиков», затем прокрутите вниз до подзаголовка «PowerShell». Установите флажок «изменить политику выполнения, чтобы разрешить запуск локальных сценариев PowerShell без подписи. Требовать подписи для удаленных скриптов».

Как установить политику выполнения PowerShell для текущего пользователя с помощью PowerShell

Кроме того, вы можете включить сценарии PowerShell с помощью другой политики для текущего пользователя через командную строку.


Set-ExecutionPolicy Bypass -Scope CurrentUser -Force

Измените «Обход» для любого типа политики, который вы хотите использовать, чтобы включить сценарии PowerShell, сверяясь с таблицей выше.

Как включить сценарии PowerShell для локального компьютера через командную строку

Если вы хотите применить политику ко всей машине, это возможно с помощью небольшого изменения команды.

    (Необязательно) установите для текущей пользовательской политики значение Undefined

При настройке политики выполнения для локального компьютера Windows будет использовать то, что вы выбрали для текущего пользователя перед глобальной настройкой. В этом случае вы можете получить сообщение об ошибке со строкой "Windows PowerShell успешно обновила вашу политику выполнения, но этот параметр переопределен политикой, определенной в более конкретной области действия".

Если вы хотите, чтобы у вашего текущего пользователя были те же настройки, что и у локального компьютера в целом, вы можете переключить его на Не определено или изменить отдельно на следующем шаге. В противном случае вы можете игнорировать ошибку.

Вы можете установить политику выполнения для текущего пользователя Windows и локального компьютера с помощью двух отдельных команд:

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
Set-ExecutionPolicy Unrestricted -Scope LocalMachine -Force

Вы можете установить разные политики для каждого из них на основе приведенной выше таблицы или установить для текущего пользователя значение «Не определено», чтобы он следовал настройкам локального компьютера.

Как установить политику выполнения PowerShell только для текущего окна PowerShell

В целях безопасности большинству пользователей обычно рекомендуется устанавливать политику выполнения PowerShell для каждого сценария.

    Включить выполнение сценария PowerShell для текущего экземпляра

В окне PowerShell введите:

Set-ExecutionPolicy Bypass -Scope Process -Force

Делайте это только в том случае, если вы доверяете сценарию. Затем вы можете запустить скрипт как обычно.

Если PowerShell блокирует выполнение сценариев, выполните следующие действия, чтобы включить выполнение сценариев PowerShell в Windows 10.

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

По сути, сценарий PowerShell — это не что иное, как текстовый файл с набором команд и расширением «.ps1». Используя сценарий, PowerShell может выполнять команды в файле в последовательном порядке для получения желаемых результатов.

Учитывая, насколько мощной является возможность выполнения сценариев, PowerShell имеет встроенный механизм блокировки нежелательного или случайного выполнения сценариев. Например, когда вы пытаетесь выполнить сценарий PowerShell с настройками по умолчанию, он покажет «невозможно загрузить, поскольку выполнение сценариев отключено в этой системе». ошибка. Чтобы включить выполнение сценариев PowerShell, сначала необходимо установить правильную политику выполнения.

Если вам когда-нибудь понадобится выполнить сценарии PowerShell, выполните перечисленные ниже шаги, чтобы включить сценарии PowerShell в Windows 10.

Шаги по включению выполнения скриптов PowerShell в Windows 10

  1. Нажмите клавишу Windows, чтобы открыть меню "Пуск".
  2. Введите «PowerShell».
  3. Щелкните правой кнопкой мыши результат PowerShell и выберите «Запуск от имени администратора».
  4. После открытия окна PowerShell выполните «get-executionpolicy», чтобы узнать текущую политику выполнения.
  5. Скорее всего, там будет указано «Запрещено». Это означает, что скрипты заблокированы.
  6. В окне PowerShell выполните команду set-executionpolicy remotesigned.
  7. Введите «A» рядом с подтверждающим сообщением и нажмите «Ввод».
  8. Вы изменили политику выполнения, чтобы включить сценарии PowerShell.
  9. Это все. Отныне вы можете запускать сценарии, созданные непосредственно на вашем компьютере, или загружать подписанные сценарии из Интернета или других компьютеров.

    Если вы хотите запускать неподписанные скрипты, загруженные из Интернета или с других компьютеров, вам необходимо установить политику выполнения на «неограниченно». Для этого выполните команду set-executionpolicy unlimited в окне PowerShell.

    Чтобы отключить выполнение скрипта PowerShell, вы можете просто установить политику выполнения обратно на ограничение. Просто выполните команду «set-executionpolicy limited», и все готово.

    Это все. Включить выполнение сценариев PowerShell в Windows 10 очень просто. Если вы застряли или вам нужна помощь, оставьте комментарий ниже, и я постараюсь помочь, насколько это возможно.

    Чтобы узнать больше о политиках выполнения PowerShell, прочитайте, как изменить политику обмена PowerShell в Windows 10. Вы также можете узнать больше о выполнении скриптов PowerShell из этой статьи Microsoft TechNet.

    Задает политики выполнения PowerShell для компьютеров Windows.

    Синтаксис

    Описание

    Командлет Set-ExecutionPolicy изменяет политики выполнения PowerShell для компьютеров Windows. Дополнительные сведения см. в разделе about_Execution_Policies.

    Начиная с PowerShell 6.0 для компьютеров, отличных от Windows, политика выполнения по умолчанию не ограничена и не может быть изменена. Командлет Set-ExecutionPolicy доступен, но PowerShell отображает сообщение консоли о том, что он не поддерживается.

    Политика выполнения является частью стратегии безопасности PowerShell. Политики выполнения определяют, можете ли вы загружать файлы конфигурации, такие как ваш профиль PowerShell, или запускать сценарии. И должны ли сценарии иметь цифровую подпись перед запуском.

    Областью командлета Set-ExecutionPolicy по умолчанию является LocalMachine, что влияет на всех, кто использует компьютер. Чтобы изменить политику выполнения для LocalMachine, запустите PowerShell с параметром «Запуск от имени администратора».

    Чтобы отобразить политики выполнения для каждой области в порядке приоритета, используйте Get-ExecutionPolicy -List . Чтобы увидеть действующую политику выполнения для вашего сеанса PowerShell, используйте Get-ExecutionPolicy без параметров.

    Примеры

    Пример 1. Установка политики выполнения

    В этом примере показано, как установить политику выполнения для локального компьютера.

    Командлет Set-ExecutionPolicy использует параметр ExecutionPolicy для указания политики RemoteSigned. Параметр Scope указывает значение области по умолчанию, LocalMachine. Чтобы просмотреть параметры политики выполнения, используйте командлет Get-ExecutionPolicy с параметром List.

    Пример 2. Установка политики выполнения, конфликтующей с групповой политикой

    Эта команда пытается установить для политики выполнения области LocalMachine значение Restricted. LocalMachine имеет более строгие ограничения, но не является эффективной политикой, поскольку конфликтует с групповой политикой. Политика Restricted записывается в ветку реестра HKEY_LOCAL_MACHINE.

    Командлет Set-ExecutionPolicy использует параметр ExecutionPolicy для указания политики Restricted. Параметр Scope указывает значение области по умолчанию, LocalMachine. Командлет Get-ChildItem использует параметр Path с поставщиком HKLM для указания расположения в реестре.

    Пример 3. Применение политики выполнения с удаленного компьютера к локальному компьютеру

    Эта команда получает объект политики выполнения с удаленного компьютера и устанавливает политику на локальном компьютере. Get-ExecutionPolicy отправляет объект Microsoft.PowerShell.ExecutionPolicy по конвейеру. Командлет Set-ExecutionPolicy принимает входные данные конвейера и не требует параметра ExecutionPolicy.

    Командлет Invoke-Command выполняется на локальном компьютере и отправляет ScriptBlock на удаленный компьютер. Параметр ComputerName указывает удаленный компьютер Server01. Параметр ScriptBlock запускает командлет Get-ExecutionPolicy на удаленном компьютере. Объект Get-ExecutionPolicy отправляется по конвейеру в Set-ExecutionPolicy. Set-ExecutionPolicy применяет политику выполнения к области локального компьютера по умолчанию, LocalMachine.

    Пример 4. Установка области действия для политики выполнения

    В этом примере показано, как задать политику выполнения для указанной области CurrentUser. Область CurrentUser влияет только на пользователя, который устанавливает эту область.

    Set-ExecutionPolicy использует параметр ExecutionPolicy для указания политики AllSigned. Параметр Scope указывает CurrentUser. Чтобы просмотреть параметры политики выполнения, используйте командлет Get-ExecutionPolicy с параметром List.

    Действующая политика выполнения для пользователя становится AllSigned.

    Пример 5. Удаление политики выполнения для текущего пользователя

    В этом примере показано, как использовать политику выполнения Undefined для удаления политики выполнения для указанной области.

    Set-ExecutionPolicy использует параметр ExecutionPolicy для указания политики Undefined. Параметр Scope указывает CurrentUser. Чтобы просмотреть параметры политики выполнения, используйте командлет Get-ExecutionPolicy с параметром List.

    Пример 6. Установка политики выполнения для текущего сеанса PowerShell

    Область процесса влияет только на текущий сеанс PowerShell. Политика выполнения сохраняется в переменной среды $env:PSExecutionPolicyPreference и удаляется при закрытии сеанса.

    Set-ExecutionPolicy использует параметр ExecutionPolicy для указания политики AllSigned. Параметр Scope задает значение Process. Чтобы просмотреть параметры политики выполнения, используйте командлет Get-ExecutionPolicy с параметром List.

    Пример 7. Разблокируйте скрипт, чтобы запустить его без изменения политики выполнения

    В этом примере показано, как политика выполнения RemoteSigned предотвращает запуск неподписанных скриптов.

    Рекомендуется прочитать код сценария и убедиться в его безопасности перед использованием командлета Unblock-File. Командлет Unblock-File разблокирует сценарии, чтобы они могли выполняться, но не изменяет политику выполнения.

    Set-ExecutionPolicy использует параметр ExecutionPolicy для указания политики RemoteSigned. Политика задана для области по умолчанию, LocalMachine.

    Командлет Get-ExecutionPolicy показывает, что RemoteSigned является действующей политикой выполнения для текущего сеанса PowerShell.

    Сценарий Start-ActivityTracker.ps1 выполняется из текущего каталога. Сценарий заблокирован RemoteSigned, так как у сценария нет цифровой подписи.

    Для этого примера код скрипта был проверен и признан безопасным для выполнения. Командлет Unblock-File использует параметр Path для разблокировки сценария.

    Чтобы убедиться, что Unblock-File не изменил политику выполнения, Get-ExecutionPolicy отображает действующую политику выполнения RemoteSigned.

    Сценарий Start-ActivityTracker.ps1 выполняется из текущего каталога. Сценарий начинает выполняться, поскольку он был разблокирован командлетом Unblock-File.

    Параметры

    Запрашивает подтверждение перед запуском командлета.

    < /tr>

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

    Приемлемые значения политики выполнения:

    • Все подписи. Требуется, чтобы все сценарии и файлы конфигурации были подписаны доверенным издателем, включая сценарии, написанные на локальном компьютере.
    • Обход. Ничего не заблокировано, предупреждений и подсказок нет.
    • По умолчанию. Задает политику выполнения по умолчанию. Ограничено для клиентов Windows или RemoteSigned для серверов Windows.
    • Удаленная подпись. Требуется, чтобы все сценарии и файлы конфигурации, загруженные из Интернета, были подписаны доверенным издателем. Политика выполнения по умолчанию для серверных компьютеров Windows.
    • Запрещено. Не загружает файлы конфигурации и не запускает сценарии. Политика выполнения по умолчанию для клиентских компьютеров Windows.
    • Не определено. Для области не задана политика выполнения. Удаляет назначенную политику выполнения из области, не заданной групповой политикой. Если политика выполнения во всех областях не определена, действующая политика выполнения ограничена.
    • Не ограничено. Начиная с PowerShell 6.0, это политика выполнения по умолчанию для компьютеров, отличных от Windows, и ее нельзя изменить. Загружает все файлы конфигурации и запускает все сценарии. Если вы запускаете неподписанный скрипт, загруженный из Интернета, перед запуском вам будет предложено предоставить разрешение.

    Подавляет все запросы подтверждения. Будьте осторожны с этим параметром, чтобы избежать непредвиденных результатов.

    Тип:SwitchParameter
    Псевдонимы:cf
    Позиция:Имя
    Значение по умолчанию:False
    Принимать ввод конвейера:False
    Допускать подстановочные знаки:False
    Тип:SwitchParameter
    Позиция:Именованный
    Значение по умолчанию:False
    Принять ввод конвейера:False
    Допускать подстановочные знаки:False

    Определяет область, на которую влияет политика выполнения. Область по умолчанию — LocalMachine.

    Эффективная политика выполнения определяется порядком приоритета следующим образом:

    • Машинная политика. Задается групповой политикой для всех пользователей компьютера.
    • Пользовательская политика. Задается групповой политикой для текущего пользователя компьютера.
    • Процесс. Влияет только на текущий сеанс PowerShell.
    • Текущий пользователь.Влияет только на текущего пользователя.
    • Локальная машина. Область действия по умолчанию, влияющая на всех пользователей компьютера.

    Область процесса влияет только на текущий сеанс PowerShell. Политика выполнения сохраняется в переменной среды $env:PSExecutionPolicyPreference, а не в реестре. Когда сеанс PowerShell закрывается, переменная и значение удаляются.

    Политики выполнения для области CurrentUser записываются в ветку реестра HKEY_LOCAL_USER.

    Политики выполнения для области LocalMachine записываются в ветку реестра HKEY_LOCAL_MACHINE.

    Тип:ExecutionPolicyScope
    Допустимые значения:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
    Позиция:1
    Значение по умолчанию: LocalMachine
    Принимать ввод конвейера:True
    Принимать подстановочные знаки:Ложь

    Показывает, что произойдет, если командлет запустится. Командлет не запущен.

    < /tr>

    Входные данные

    Microsoft.PowerShell.ExecutionPolicy, System.String

    Вы можете передать объект политики выполнения или строку, содержащую имя политики выполнения, в Set-ExecutionPolicy .

    Результаты

    Нет

    Set-ExecutionPolicy не возвращает никаких выходных данных.

    Примечания

    Командлет Set-ExecutionPolicy не изменяет области действия MachinePolicy и UserPolicy, поскольку они задаются групповыми политиками.

    Командлет Set-ExecutionPolicy не переопределяет групповую политику, даже если пользовательские настройки накладывают более строгие ограничения, чем политика.

    Если групповая политика «Включить выполнение сценария» включена для компьютера или пользователя, настройка пользователя сохраняется, но не действует. PowerShell отображает сообщение, объясняющее конфликт.

    Читайте также:

    Тип:SwitchParameter
    Псевдонимы:wi
    Позиция:Имя
    Значение по умолчанию:False
    Принимать ввод конвейера:False
    Допускать подстановочные знаки:False