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


about_Execution_Policies

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_Execution_Policies

КРАТКОЕ ОПИСАНИЕ

Описание политик выполнения Windows PowerShell® и руководство по управлению ими.

ПОДРОБНОЕ ОПИСАНИЕ

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

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

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

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

ПОЛИТИКИ ВЫПОЛНЕНИЯ WINDOWS POWERSHELL

Политики выполнения Windows PowerShell перечислены ниже:

Restricted — это политика по умолчанию.

RESTRICTED

- Политика выполнения по умолчанию в Windows 8, Windows Server 2012 и Windows 8.1.

- Разрешает выполнять отдельные команды, но не сценарии.

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

ALLSIGNED

- Запуск сценариев разрешен.

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

- Выводит запрос перед запуском сценариев от издателей, которые еще не классифицированы как доверенные или недоверенные.

- Пробует запускать подписанные, но вредоносные, сценарии.

REMOTESIGNED

- Запуск сценариев разрешен. Это политика выполнения по умолчанию в Windows Server 2012 R2.

- Требует, чтобы сценарии и файлы конфигурации, загруженные из Интернета (включая электронную почту и программы обмена мгновенными сообщениями), имели цифровую подпись от доверенного издателя.

- Не требует цифровых подписей от сценариев, созданных на локальном компьютере (не загруженных из Интернета).

- Запускает неподписанные сценарии, загруженные из Интернета, если они были разблокированы, например с помощью командлета Unblock-File.

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

UNRESTRICTED

- Запуск неподписанных сценариев разрешен. (Существует риск запуска вредоносных сценариев.)

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

BYPASS

- Ничего не блокируется, и никакие предупреждения и запросы не появляются.

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

UNDEFINED

- В текущей области действия не задана политика выполнения.

- Если во всех областях действия задана политика выполнения Undefined, то фактически действует политика Restricted, заданная по умолчанию.

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

ОБЛАСТЬ ДЕЙСТВИЯ ПОЛИТИКИ ВЫПОЛНЕНИЯ

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

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

Области действия перечисляются в порядке приоритетности.

- PROCESS

Политика выполнения действует только на текущий сеанс (текущий процесс Windows PowerShell).

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

- CURRENTUSER

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

- LOCALMACHINE

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

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

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

ПОЛУЧЕНИЕ ПОЛИТИКИ ВЫПОЛНЕНИЯ

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

Следующая команда получает текущую политику выполнения:

Get-ExecutionPolicy    

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

        Get-ExecutionPolicy -List

Результат будет иметь следующий вид:

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

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

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

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

        Get-ExecutionPolicy -Scope CurrentUser
        

ИЗМЕНЕНИЕ ПОЛИТИКИ ВЫПОЛНЕНИЯ

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

Изменение вступает в силу немедленно. Перезагружать Windows PowerShell не требуется.

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

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

Примечание. Чтобы запустить команды, которые меняют политику выполнения для локального компьютера (по умолчанию) в Windows Vista и более поздних версиях Windows, запустите Windows PowerShell с помощью команды "Запуск от имени администратора".

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

        Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Например:

        Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

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

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

Например:

        Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

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

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

УДАЛЕНИЕ ПОЛИТИКИ ВЫПОЛНЕНИЯ

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

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

        Set-ExecutionPolicy Undefined

Также можно ввести следующую команду:

        Set-ExecutionPolicy Undefined -scope LocalMachine

Если политика выполнения не задана ни в одной области действия, то действует политика Restricted, заданная по умолчанию.

ВЫБОР ДРУГОЙ ПОЛИТИКИ ВЫПОЛНЕНИЯ НА ОДИН СЕАНС

С помощью параметра ExecutionPolicy файла PowerShell.exe можно задать политику выполнения для нового сеанса Windows PowerShell. Эта политика действует только в текущем сеансе и его дочерних сеансах.

Чтобы задать политику выполнения для нового сеанса, запустите Windows PowerShell из командной строки (например, Cmd.exe или Windows PowerShell), а затем используйте параметр ExecutionPolicy файла PowerShell.exe.

Например:

PowerShell.exe -ExecutionPolicy AllSigned

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

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

ИСПОЛЬЗОВАНИЕ ГРУППОВОЙ ПОЛИТИКИ ДЛЯ УПРАВЛЕНИЯ ПОЛИТИКОЙ ВЫПОЛНЕНИЯ

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

Параметр "Включить выполнение сценариев" действует следующим образом:

— Если отключить параметр "Включить выполнение сценариев", сценарии не запускаются. Это эквивалентно политике выполнения Restricted.

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

        Group Policy                Execution Policy  
        ------------                ----------------
        Allow all scripts.          Unrestricted

        Allow local scripts         RemoteSigned
        and remote signed
        scripts. 

        Allow only signed           AllSigned
        scripts.

— Если параметр "Включить выполнение сценариев" не настроен, он не оказывает никакого действия. Действует политика выполнения, заданная в Windows PowerShell.

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

        For Windows XP and Windows Server 2003:
        Administrative Templates\Windows Components\Windows PowerShell

        For Windows Vista and later versions of Windows:
        Administrative Templates\Classic Administrative Templates\
        Windows Components\Windows PowerShell

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

Файл PowerShellExecutionPolicy.adm доступен в Центре загрузки Майкрософт. Дополнительные сведения см. на странице "Административные шаблоны для Windows PowerShell" (https://go.microsoft.com/fwlink/?LinkId=131786).

Дополнительные сведения см. в разделе about_Group_Policy_Settings (https://go.microsoft.com/fwlink/?LinkID=251696).

ПРИОРИТЕТ ПОЛИТИКИ ВЫПОЛНЕНИЯ

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

        - Group Policy: Computer Configuration
        - Group Policy: User Configuration
        - Execution Policy: Process (or PowerShell.exe -ExecutionPolicy)
        - Execution Policy: CurrentUser
        - Execution Policy: LocalMachine    

УПРАВЛЕНИЕ ПОДПИСАННЫМИ И НЕПОДПИСАННЫМИ СЦЕНАРИЯМИ

Если в Windows PowerShell используется политика выполнения RemoteSigned, Windows PowerShell не будет запускать неподписанные сценарии, скачанные из Интернета (в том числе по электронной почте и через программы обмена мгновенными сообщениями).

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

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

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

СМ. ТАКЖЕ

about_Environment_Variables

about_Signing

Get-ExecutionPolicy

Set-ExecutionPolicy

Get-Item

Unblock-File

"Административные шаблоны для Windows PowerShell"

(https://go.microsoft.com/fwlink/?LinkId=131786)

"Справка консоли PowerShell.exe"

(https://go.microsoft.com/fwlink/?LinkID=113439)