Поделиться через


Сведения о политиках выполнения

Краткое описание

Описывает политики выполнения PowerShell и описывает, как ими управлять.

Полное описание

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

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

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

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

Политики выполнения PowerShell

Ниже приведены политики выполнения PowerShell.

AllSigned

  • Скрипты могут выполняться.
  • требует, чтобы все скрипты и файлы конфигурации, включая скрипты, подготовленные на локальном компьютере, были подписаны доверенным издателем.
  • Запрашивает перед выполнением скриптов от издателей, которые вы еще не классифицировали как доверенные или ненадежные.
  • Риски выполнения подписанных, но вредоносных сценариев.

обход проверки.

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

Default

  • Задает политику выполнения по умолчанию.
  • Ограничено для клиентов Windows.
  • RemoteSigned для серверов Windows.

RemoteSigned

  • Политика выполнения по умолчанию для компьютеров Windows Server.
  • Скрипты могут выполняться.
  • Требуется цифровая подпись доверенного издателя для сценариев и файлов конфигурации, скачанных из Интернета, включая электронную почту и программы обмена мгновенными сообщениями.
  • Не требуются цифровые подписи для скриптов, написанных на локальном компьютере и не скачанных из Интернета.
  • Выполняет скрипты, загруженные из Интернета и не подписанные, если они разблокированы, например с помощью командлета Unblock-File .
  • Рискует выполнение неподписанных скриптов из источников, отличных от Интернета, и подписанных, но вредоносных сценариев.

С ограниченным доступом

  • Политика выполнения по умолчанию для клиентских компьютеров Windows.
  • Разрешает отдельные команды, но не разрешает скрипты.
  • Запрещает выполнение всех файлов скриптов, включая файлы форматирования и конфигурации (.ps1xml), файлы скриптов модуля (.psm1) и профили PowerShell (.ps1).

Не определено.

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

С неограниченным доступом

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

Примечание

В системах, которые не отличают UNC-пути от путей к Интернету, скриптам, определяемым путем UNC, может быть запрещено выполняться с политикой выполнения RemoteSigned .

область политики выполнения

Политику выполнения можно задать только в определенном область.

Допустимые значения для параметра Scope : MachinePolicy, UserPolicy, Process, CurrentUser и LocalMachine. LocalMachine используется по умолчанию при настройке политики выполнения.

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

Дополнительные сведения см. в разделе Set-ExecutionPolicy.

MachinePolicy

Устанавливается групповая политика для всех пользователей компьютера.

UserPolicy

Задается групповая политика для текущего пользователя компьютера.

Процесс

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

CurrentUser

политика выполнения распространяется только на текущего пользователя. Он хранится в подразделе реестра HKEY_CURRENT_USER .

LocalMachine

Политика выполнения влияет на всех пользователей на текущем компьютере. Он хранится в подразделе реестра HKEY_LOCAL_MACHINE .

Управление политикой выполнения с помощью PowerShell

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

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

Get-ExecutionPolicy

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

Get-ExecutionPolicy -List

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

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine       AllSigned

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

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

Например, следующая команда получает политику выполнения для область CurrentUser:

Get-ExecutionPolicy -Scope CurrentUser

Изменение политики выполнения

Чтобы изменить политику выполнения PowerShell на компьютере с Windows, используйте Set-ExecutionPolicy командлет . Изменение вступает в силу немедленно. Вам не нужно перезапускать PowerShell.

Если вы задали политику выполнения для областей LocalMachine или CurrentUser, изменение сохраняется в реестре и остается в действии до тех пор, пока вы не измените его снова.

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

Примечание

В Windows Vista и более поздних версиях Windows для выполнения команд, изменяющих политику выполнения для локального компьютера, LocalMachine область, запустите PowerShell с параметром Запуск от имени администратора.

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

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Пример:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Чтобы задать политику выполнения в определенном область:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

Пример:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

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

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

Удаление политики выполнения

Чтобы удалить политику выполнения для определенного область, задайте для нее значение Undefined.

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

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

Чтобы удалить политику выполнения для области, выполните следующие действия.

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

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

Настройка другой политики для одного сеанса

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

Чтобы задать политику выполнения для нового сеанса, запустите PowerShell в командной строке, например cmd.exe или Из PowerShell, а затем используйте параметр ExecutionPolicypowershell.exe , чтобы задать политику выполнения.

Пример:

powershell.exe -ExecutionPolicy AllSigned

Заданная политика выполнения не хранится в реестре. Вместо этого он хранится в переменной $env:PSExecutionPolicyPreference среды. Переменная удаляется при закрытии сеанса, в котором задается политика. Изменить политику, изменив значение переменной, нельзя.

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

Используйте групповую политику для управления политикой выполнения

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

Параметр политики Включить выполнение скриптов:

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

  • Если включить параметр Включить выполнение скриптов, вы можете выбрать политику выполнения. Параметры групповой политики эквивалентны следующим параметрам политики выполнения:

    Групповая политика Политика выполнения
    Разрешить все скрипты С неограниченным доступом
    Разрешить локальные и удаленные подписанные скрипты RemoteSigned
    Разрешить только подписанные скрипты AllSigned
  • Если параметр Включить выполнение скриптов не настроен, он не будет применяться. Политика выполнения, заданная в PowerShell, применяется.

Файлы PowerShellExecutionPolicy.adm и PowerShellExecutionPolicy.admx добавляют политику Включить выполнение скриптов в узлы "Конфигурация компьютера" и "Конфигурация пользователя" в редакторе групповой политики в следующие каталоги.

Windows XP и Windows Server 2003:

Administrative Templates\Windows Components\Windows PowerShell

Windows Vista и более поздние версии Windows:

Административные шаблоны\Классические административные шаблоны
Компоненты Windows\Windows PowerShell

Политики, заданные в узле "Конфигурация компьютера", имеют приоритет над политиками, заданными в узле "Конфигурация пользователя".

Дополнительные сведения см. в статье О параметрах групповой политики.

Приоритет политики выполнения

При определении действующей политики выполнения для сеанса PowerShell оценивает политики выполнения в следующем порядке:

  • групповая политика: MachinePolicy
  • групповая политика: UserPolicy
  • Политика выполнения: процесс (или powershell.exe -ExecutionPolicy)
  • Политика выполнения: CurrentUser
  • Политика выполнения: LocalMachine

Управление подписанными и неподписаными скриптами

Если ваша политика выполнения PowerShell — RemoteSigned, PowerShell не будет запускать неподписанные скрипты, скачанные из Интернета, включая электронную почту и программы для обмена мгновенными сообщениями.

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

Начиная с PowerShell 3.0, можно использовать параметр Stream командлета Get-Item для обнаружения файлов, заблокированных из-за загрузки из Интернета. Используйте командлет , Unblock-File чтобы разблокировать скрипты, чтобы их можно было запустить в PowerShell.

Дополнительные сведения см . в разделах about_Signing, Get-Item и Unblock-File.

См. также:

about_Environment_Variables

about_Group_Policy_Settings

about_Signing

Get-ExecutionPolicy

Get-Item

Справка по командной строке PowerShell.exe

Set-ExecutionPolicy

Unblock-File