Powershell разрешить выполнение скриптов

Powershell разрешить выполнение скриптов

В операционной системе Windows 10 имеется мощный инструмент для управления и выполнения различных задач — это PowerShell. Эта консоль предназначена для администраторов, поскольку она позволяет им контролировать всю операционную систему с помощью сценариев (script). PowerShell используется многими фоновыми приложениями для внесения изменений в систему и это ставит под угрозу безопасность нашего ПК.

Сценарий (script) — простая программа написана в коде, который работает линейно на нашем компьютере. Мы можем создавать и выполнять собственные сценарии для автоматизации задач, или приложения могут выполнять их для выполнения определенных конфигураций и задач. По умолчанию Windows 10 не запрещает ни приложениям, ни нам запускать сценарии в системе, если они подписаны или являются "своими". Проблема возникает, когда мы запускаем свой скрипт, и нам выдает ошибку "Выполнение сценариев отключено в этой системе". Это многоуровневая мера безопасности в PowerShell, которая предотвращает запуск вредоносных сценариев и может нанести вред системе. Давайте разберем, как изменить политики безопасности для PowerShell.

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

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

  • Get-ExecutionPolicy -List

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

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

  • Restricted: заблокировано выполнение любых скриптов, но разрешается работа интерактивных команд.
  • RemoteSigned: загруженные скрипты должны быть подписаны доверенным издателем. Локальные скрипты работают без подписи
  • AllSigned: разрешает выполнение любого подписанного скрипта, как локального, так и удаленного (загруженного).
  • Unrestricted: без ограничений. Вы можете запустить все сценарии, даже те, которые не подписаны.

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

  • Set-ExecutionPolicy Unrestricted -Scope CurrentUser — запуск без ограничения для пользователя.
  • Set-ExecutionPolicyRestricted -Scope CurrentUser вернуть назад, если будет нужно.

Разрешает без ограничений выполнять сценарии для локального пользователя. Ключ -Scope определяет, к чему применяется изменение политики. Когда вы вводите "CurrentUser", то применяется только к текущему пользователю, а когда вы вводите "LocalMachine", он применяется ко всей системе.

Если выше способ не помог вам запустить свой скрипт и ошибка "Выполнение сценариев отключено в этой системе" появляется, то можно снять полностью ограничения. Вы должны понимать, что это большой риск и ваш скрипт должен быть безопасен на 101%. Откройте PowerShell от имени админа и:

  • Set-ExecutionPolicy Unrestricted — разрешить выполнение скриптов без ограничений.
  • Set-ExecutionPolicy Restricted — вернуть назад по умолчанию.
Читайте также:  Камера для съемки сверху

Итак, я решил протестировать работу скриптов powershell на Windows Server 2003. Имеем следующий файл находящийся в корне диска C: с именем audit.ps1.

Пытаюсь его запустить в консоли.

C:WINDOWSsystem32windowspowershellv1powershell.exe

Следует изменить настройки безопасности для Windows PowerShell. Для этой цели используются два командлета: getexecutionpolicy и set-executionpolicy. С помощью get-executionpolicy вы получаете существующие настройки. Существует четыре уровня безопасности:

Restricted (Запрещено, по умолчанию) Сценарии не запускаются.

Allsigned (Все подписанные) Запускаются только подписанные сценарии.

RemoteSigned (Удаленные подписанные) Разрешен запуск локальных сценариев, прочие сценарии должны быть подписаны.

Unrestricted (Без ограничений) Запускаются все сценарии.

Для изменения этих настроек системный администратор должен вызвать, например,

Запуск PowerShell скрипта

Данная заметка посвящена описанию настройки необходимых параметров для запуска PowerShell скриптов. Чаще при первом запуске .ps1 скриптов вы видите следующие ошибки:

Файл невозможно загрузить. Файл не имеет цифровой подписи. Скрипт не будет выполнен в системе. Чтобы получить дополнительные сведения, введите команду «Get-Help about_signing».
The file cannot be loaded. The file is not digitally signed. The script will not execute on the system. Please see «Get-Help about_Signing» for more details.

Запустить программу от ненадежного издателя? Файл опубликован CN=

. Этот издатель не помечен как надежный в данной системе. Выполнять следует только скрипты надежных издателей.
[V] Никогда не выполнять [D] Не выполнять [R] Выполнить один раз [A] Всегда выполнять [?] Справка (по умолчанию «D»):
Do you want to run software from this untrusted publisher? The file is published by CN=

. This publisher is not trusted on your system. Only run scripts from trusted publishers.
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help (default is «D»):

Данные ошибки и сообщения вызваны настройками политики выполнения Windows PowerShell. При этом не стоит думать, что эти параметры действительно повышают безопасность ОС, ведь код все равно отработает, если его скопировать в к консоль PowerShell. Таким образом, настройки безопасности можно отключить — они защищают только от случайных действий. Поэтому обычно данную проблему решают командой:

Применить данную команду рекомендуется в консоли PowerShell запущенной от имени администратора. Данная команда разрешит выполнять, на данном компьютере, не подписанные скрипты и скрипты из Интернета.

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

Результат выполнения командлета:

Scope ExecutionPolicy
—— —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted

Данная политика может принимать 6 значений:

Restricted (Политика выполняется по умолчанию. Например если во всех областях применения стоит значение Undefined)
— Допускает отдельные команды, но скрипты выполнять нельзя.
— Препятствует выполнению всех файлов скриптов, включая файлы форматирования и конфигурации (PS1XML), файлы скриптов модулей (PSM1) и профили Windows PowerShell (PS1).

Читайте также:  Билайн 9731 подключена без моего согласия

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

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

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

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

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

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

MachinePolicy и UserPolicy задаются политиками AD или локальными политиками данного компьютера.
Process — область применения текущая ссесия. В справке говорится, что её значение хранится в переменной $PSExecutionPolicyPreference однако получить/изменить значение данной политики через переменную не удалось. Измения сделанные на эту область применения ни как не повлияют на другие сессии.
CurrentUser — область применения текущей пользователь. Её значение хранится в разделе реестра HKEY_CURRENT_USER («HKEY_CURRENT_USERSoftwareMicrosoftPowerShell1ShellIdsMicrosoft.PowerShellExecutionPolicy»).
LocalMachine — область применения на всех пользователей текущего компьютера. Она хранится в разделе реестра HKEY_LOCAL_MACHINE(«HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIdsScriptedDiagnosticsExecutionPolicy»).

У команды get-executionpolicy есть параметр -Scope. С помощью данного параметра можно выбрать область применения для которого отобразиться значение политики.

Get-ExecutionPolicy -scope Process

Результат выполнения командлета: RemoteSigned

При этом Области применения имеют приоритет высшим обладает MachinePolicy, потом UserPolicy, Process, CurrentUser и самый низкий приоритет у LocalMachine.
Поэтому в примере:

Scope ExecutionPolicy
—— —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted

В текущей ссесии результирующая политика будет иметь значение Unrestricted.

Читайте также:  Простые пароли на телефон

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

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

-ExecutionPolicy
Указывает значение политики. Может иметь следующие значения: Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, Undefined. Данный параметр обязательный для указания. Если не указан, во время выполнения комадлет попросит указать значения.

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

-Scope
Определяет область применения данной политики. Может иметь следующие значения: LocalMachine ,Process, CurrentUser. Если параметр области применения не указан, по умолчанию указывается значение LocalMachine.

-Force
С этим параметром командлет не будет требовать подтверждения со стороны пользователя. Например:

Командлет ничего не выведет на экран и применит значение политики.

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

Подтверждение
Вы действительно хотите выполнить это действие?
Выполнение операции «Set-ExecutionPolicy» над целевым объектом «Unrestricted».
[Y] Да — Y [A] Да для всех — A [N] Нет — N [L] Нет для всех — L [S] Приостановить — S [?] Справка (значением по умолчанию является «Y»):

Изменение политики выполнения
Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies. Вы хотите изменить политику выполнения?
[Y] Да — Y [N] Нет — N [S] Приостановить — S [?] Справка (значением по умолчанию является «Y»):

-WhatIf
С параметром WhatIf командлет не выполняется. А выводит на консоль свои предполагаемые действия без данного параметра.

WhatIf: Выполнение операции «Set-ExecutionPolicy» над целевым объектом «Unrestricted».

Изменение параметров политики, при запуске консоли.

Так же можно задать значение области применения Process при запуске консоли PowerShell c помощью параметра executionpolicy. Пример:

Scope ExecutionPolicy
—— —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted

Изменение параметров политики запуска скриптов, с помощью групповых политик.

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

для MachinePolicy:

Computer Configuration/Policies/Administrative Templates/Windows Components/Windows PowerShell

Конфигурация компьютера/Административные шаблоны/Компоненты Windows/Windows PowerShell

для UserPolicy:
User Configuration/Policies/Administrative Templates/Windows Components/Windows PowerShell

Конфигурация пользователя/Административные шаблоны/Компоненты Windows/Windows PowerShell

Параметр Execution Policy может принимать 3 значения:

ЗНАЧЕНИЕ ПАРАМЕТРА EXECUTION POLICY В ГРУППОВОЙ ПОЛИТИКИ ЗНАЧЕНИЕ ПАРАМЕТРА ОТОБРАЖАЮЩЕЕСЯ В GET-EXECUTIONPOLICY
Разрешить все скрипты.
(Allow all scripts)
Unrestricted
Разрешить локальные скрипты и удаленные подписанные скрипты.
(Allow local scripts and remote signed scripts)
RemoteSigned
Разрешить только подписанные скрипты.
(Allow all scripts)
AllSigned

Нашли ошибку в тексте? Выделите фрагмент текста и нажмите Ctrl+Enter

Ссылка на основную публикацию
Nfc браслет для бесконтактной оплаты bepay
Со склада в Москве Производство под заказ От 5 шт. 990 руб. - От 20 шт. 970 руб. - От...
Intel 82801jb ich10 high definition audio controller
Automatically update your drivers Identify your products and get driver and software updates for your Intel hardware. Available Downloads Audio_Win10_6.0.1.7982.zip...
Intel celeron 1800 характеристики
Наконец-то мы дождались этого момента. Архитектура процессора Celeron, который долгие годы верой и правдой служил огромному числу пользователей, в первый...
Nexus the jupiter incident обзор
title Nexus: The Jupiter Incident developer Mithis Entertainment engine Black Sun released 5 ноября 2004 года genre Тактика реального времени...
Adblock detector