По-умолчанию настройки Windows запрещают запуск скриптов PowerShell. Это необходимо для предотвращения запуска вредоносного кода на PowerShell. Настройки политик запуска PowerShell скриптов определяются в Execution Policy. В этой статье мы рассмотрим доступные политики запуска PS скриптов, как изменить Execution Policy и настроить политики использования PowerShell скриптов на компьютерах в домене.
Содержание:
- Выполнение PowerShell скриптов запрещено для данной системы
- Как разрешить запуск скриптов PowerShell с помощью Execution Policy?
- Настройка PowerShell Execution Policy с помощью групповых политик
- Способы обхода политики PowerShell Execution
Выполнение PowerShell скриптов запрещено для данной системы
При попытке выполнить PowerShell скрипт (файл с расширением PS1) на чистой Windows 10, появляется ошибка:
File C:ps.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
Не удается загрузить файл.ps1, так как выполнение скриптов запрещено для данной системы.
Текущее значение политики выполнения скриптов PowerShell на компьютере можно получить командой:
Get-ExecutionPolicy
Доступны следующие значения PowerShell Execution Policy:
- Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды в консоли;
- AllSigned – разрешено выполнять только подписанные PS скрипты с цифровой подписью от доверенного издателя (можно подписать скрипт самоподписанным сертификатом и добавить его в доверенные). При запуске недоверенных скриптов появляется предупреждение:
Do you want to run software from this untrusted publisher? File .ps1 is published by CN=test1 and is not trusted on your system. Only run scripts from trusted publishers
- RemoteSigned – можно запускать локальные PowerShell скрипты без ограничения. Можно запускать удаленные PS файлы с цифровой подписью (нельзя запустить PS1 файлы, скачанные из Интернета, запущенные из сетевой папки по UNC пути и т.д.);
- Unrestricted – разрешен запуск всех PowerShell скриптов;
При запуске сторонних PowerShell скриптов может появляется предупреждение с подтверждением запуска, см. ниже.
- Bypass – разрешён запуск любых PS файлов (предупреждения не выводятся) – эта политика обычно используется для автоматического запуска PS скриптов без вывода каких-либо уведомлений (например при запуске через GPO, SCCM, планировщик и т.д.) и не рекомендуется для постоянного использования;
- Default – сброс настроек выполнения скриптов на стандартную;
В Windows 10 значение политики выполнения PowerShell по-умолчанию Restricted, а в Windows Server 2016 — RemoteSigned.
- Undefined – не задано. Применяется политика Restricted для десктопных ОС и RemoteSigned для серверных.
Как разрешить запуск скриптов PowerShell с помощью Execution Policy?
Чтобы изменить текущее значение политики запуска PowerShell скриптов, используется командлет Set-ExecutionPolicy.
Например, разрешим запуск локальных скриптов:
Set-ExecutionPolicy RemoteSigned
Подтвердите изменение политики запуска PS1 скриптов, нажав Y или A.
Чтобы запрос не появлялся, можно использовать параметр Force.
Set-ExecutionPolicy RemoteSigned –Force
Если вы установили значение политики PowerShell Execution Policy в Unrestricted, то при запуске удаленных скриптов из сетевых каталогов по UNC пути, скачанных из интернета файлов, все равно будет появляться предупреждение:
Security warning Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your computer. If you trust this script, use the Unblock-File cmdlet to allow the script to run without this warning message. Do you want to run? [D] Do not run [R] Run once [S] Suspend [?] Help (default is "D")
Как PowerShell различает локальные и удаленные скрипты? Все дело в идентификаторе зоны ZoneId, которую выставляет браузер в альтернативном потоке при загрузке файла (см. статью “Как Windows определяет, что файл скачан из Интернета?”). Вы можете разблокировать такой файл, поставив галку “Разблокирвать” в его свойствах или очиститься метку зоны с помощью комадлета Unblock-File.
Также следует различать различные области действия политик выполнения скриптов PowerShell (scopes):
- MachinePolicy – действует для всех пользователей компьютера, настраивается через GPO;
- UserPolicy – действует на пользователей компьютера, также настраивается через GPO;
- Process — настройки ExecutionPolicy действует только для текущего сеанса PowerShell.exe (сбрасываются при закрытии процесса);
- CurrentUser – политика ExecutionPolicy применяется только к текущему пользователю (параметр из ветки реестра HKEY_CURRENT_USER);
- LocalMachine – политика для всех пользователей компьютера (параметр из ветки реестра HKEY_LOCAL_MACHINE);
Область применения политики можно указать с помощью параметр Scope командлета Set-ExecutionPolicy. Например:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force
Проверим текущие настройки ExecutionPolicy для всех областей:
Get-ExecutionPolicy -List
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Bypass CurrentUser Undefined LocalMachine RemoteSigned
Значение политики выполнения, которые вы задаете с помощью командлета Set-ExecutionPolicy для областей CurrentUser и LocalMachine, хранятся в реестре. Например, выполните командлет:
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restricted –Force
Откройте ветку реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell и проверьте значение REG_SZ параметра ExecutionPolicy. Оно изменилось на Restricted (допустимые значения параметра Restricted, AllSigned, RemoteSigned, Bypass, Unrestricted и Undefined).
Аналогичные настройки для области CurrentUser находятся в разделе реестра пользователя HKEY_CURRENT_USERSOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell.
Отметим, что чаще всего в корпоративной среде используется ExecutionPolicy со значением AllSigned на уровне LocalMachine. Это обеспечивает максимальный баланс между безопасностью и удобством. Для личного пользования на компьютере можно использовать RemoteSigned. Ну а Bypass политику лучше использовать только для запуска отдельных задач (например для запуска скриптов через GPO или заданий планировщика).
Настройка PowerShell Execution Policy с помощью групповых политик
Вы можете настроить политику выполнения PowerShel скриптов на серверах или компьютерах домена с помощью групповых политик.
- С помощью редактора доменных GPO (gpmc.msc) создайте новую GPO (или отредактируйте) существующую и назначьте ее на OU с компьютерами, к которым нужно применить политику запуска PowerShell скриптов;
- В редакторе политики перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows PowerShell и найдите политику Turn on Script Execution (Включить выполнение сценариев);
Аналогичная политика есть в пользовательском разделе GPO — User Configuration, но политика компьютера имеет приоритет.
- Для политики доступны три значения:
- Allow only signed scripts (Разрешать только подписанные сценарии) — соответствует политике AllSigned;
- Allow local scripts and remote signed scripts (Разрешать локальные и удаленные подписанные сценарии) — соответствует политике PS RemoteSigned;
- Allow all scripts (Разрешать все сценарии) — политика Unrestricted.
- Выберите необходимое значение политики, сохраните GPO и обновите политики на компьютере.
- Проверьте, что для области MachinePolicy теперь действуют новые настройки выполнения.
После настройки политики выполнения через GPO вы не сможете изменить настройки политики выполнения скриптов вручную. При попытке изменить настройки Execution Policy на компьютере, на который применяется такая GPO, появится ошибка:
Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope. Due to the override, your shell will retain its current effective execution policy of RemoteSigned. Type "Get-ExecutionPolicy -List" to view your execution policy settings.
Способы обхода политики PowerShell Execution
Есть несколько трюков, которые могут помочь вам, когда нужно запустить на компьютере PowerShell скрипт, не изменяя настройки политики выполнения. Например, я хочу запустить простой PS1 скрипт, который поверяет, что запущен с правами администратора.
Можно с помощью Get-Content получить содержимое скрипта и перенаправить его в стандартныq поток ввода консоли PS.
Get-Content c:pscheck_process_elevation.ps1 | PowerShell.exe -noprofile –
Либо можно запустить новый процесс powershell.exe с политикой выполнения Bypass:
powershell.exe -noprofile -executionpolicy bypass -file c:pscheck_process_elevation.ps1
По умолчанию выполнение сценариев Windows PowerShell в системе запрещено. По соображениям безопасности все скрипты PowerShell должны быть подписаны цифровой подписью, данный метод называется — политика выполнения.
Если скрипт не соответствует этому условию, то выполнение сценариев PowerShell в системе запрещено. Это связано в первую очередь с тем, что в скрипте может находиться вредоносный код, который может нанести вред операционной системе.
PowerShell имеет несколько режимов выполнения, которые определяют, какой тип кода разрешается выполнять. Существует 5 различных режимов выполнения:
- Ограниченный (Restricted) — значение по умолчанию. Блокируется выполнение любых скриптов и разрешается работа интерактивных команд.
- Все подписанные (All Signed) — разрешено выполнение скриптов, имеющих цифровую подпись.
- Удаленные подписанные (Remote Signed) — локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
- Неограниченный (Unrestricted) — разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.
- Обходной (Bypass) — ничего не блокируется, никакие предупреждения и запросы не появляются.
По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает как интерактивная оболочка. Если вы ранее не настраивали PowerShell, то вместо работы скрипта вы увидите сообщение об ошибке, написанное красным шрифтом как на скриншоте ниже.
Самым безопасным способом решения этой проблемы является – изменение политики выполнения на неограниченную, запуск скрипта, и затем обратный возврат к ограниченной политике.
Для изменения политики выполнения на неограниченную, воспользуемся консолью PowerShell открытую с правами Администратора и выполним следующую команду:
Set-ExecutionPolicy Unrestricted
После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y (Да).
Теперь можно запустить скрипт. Однако, вы подвергаете систему серьезному риску, так что по окончании работы скрипта, не забудьте вернуть политику выполнения назад в ограниченный режим. Сделать это можно с помощью следующей команды:
Set-ExecutionPolicy Restricted
После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y (Да)
Далее ниже представлены все команды для изменения политики выполнения.
Блокируется выполнение любых скриптов. Значение по умолчанию.
Set-ExecutionPolicy Restricted
Разрешено выполнение скриптов, имеющих цифровую подпись.
Set-ExecutionPolicy AllSigned
Скрипты, подготовленные на локальном компьютере, можно запускать без ограничений, скрипты, загруженные из Интернета — только при наличии цифровой подписи.
Set-ExecutionPolicy RemoteSigned
Разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.
Set-ExecutionPolicy Unrestricted
Ничего не блокируется, никакие предупреждения и запросы не появляются.
Set-ExecutionPolicy Bypass
Для выполнения выше представленных команд без подтверждения изменения, воспользуйтесь параметром -Force, например выполните команду:
Set-ExecutionPolicy Bypass -Force
Теперь при выполнении команд не нужно подтверждать производимые изменения.
Windows, Windows 10, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP
- 20.04.2018
- 26 445
- 7
- 16.10.2022
- 31
- 29
- 2
- Содержание статьи
- О запрете на выполнение скриптов PowerShell
- Отключение запрета на выполнение скриптов через PowerShell
- Отключение запрета через групповые политики
- Отключение запрета через реестр
- Комментарии к статье ( 7 шт )
- Добавить комментарий
О запрете на выполнение скриптов PowerShell
В целях безопасности, в операционных системах Windows, по умолчанию запрещено выполнение созданных вручную файлов ps1, они же скрипты PowerShell. Так что, когда вы попытаетесь запустить какой-либо скрипт через PowerShell, то скорее всего получите следующее уведомление:
Не удается загрузить файл C:Documents and SettingsRecluseРабочий столscript.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
В данном случае выполнению скрипта препятствует включенный запрет на выполнение неподписанных скриптов.
Отключение запрета на выполнение скриптов через PowerShell
Отключить запрет можно следующей командой PowerShell:
Set-ExecutionPolicy Unrestricted
Однако, в таком случае можно будет выполнить любой скрипт PowerShell, даже запущенный «из интернета». Поэтому, куда безопаснее будет отключить проверку подписи для скриптов PowerShell только для локальных скриптов. Делается это так:
Set-ExecutionPolicy RemoteSigned
Для того, чтобы вернуть все как было (запретить выполнение любых скриптов), нужно выполнить команду:
Set-ExecutionPolicy Restricted
Кроме этого, можно обойти запрет на выполнение скрипта просто используя параметр -ExecutionPolicy Bypass запуска для PowerShell. То есть, если Вам нужно выполнить файл script.ps1, то можно это сделать следующим образом:
PowerShell.exe -ExecutionPolicy Bypass -File script.ps1
Отключение запрета через групповые политики
Настройки PowerShell находятся в отдельном разделе групповых политик — Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Windows PowerShell. Конкретно, для разрешения выполнения скриптов, нужно открыть параметр «Включить выполнение сценариев«, и задать ему значение «Разрешить локальные сценарии и удаленные подписанные сценарии«.
Отключение запрета через реестр
Еще одним способом отключения ограничения на выполнение скриптов Powershell, является редактирование реестра. Параметр, который отвечает за выполнение скриптов PowerShell находится по следующему адресу: HKEY_CURRENT_USERSoftwareMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell, и носит название ExcutionPolicy. У данного параметра возможны следующие значения:
- Restricted
- AllSigned
- RemoteSigned
- Unrestricted
Powershell — это платформа автоматизации и управления задачами, разработанная корпорацией Майкрософт. Пользователи с ее помощью могут устранять неполадки, возникающие в работе операционной системы. Однако при запуске сценарного кода в PowerShell можно столкнуться с ошибкой «выполнение скриптов запрещено для данной системы». Узнаем подробнее, чем вызвана эта ошибка и способы ее решения.
Содержание
- 1 Причина ошибки
- 1.1 Добавление фрагмента кода
- 1.2 Изменение политики выполнения
Причина ошибки
Ошибка вызвана причиной ограничения доступа. Каждый скрипт может иметь сертификат доверенного издателя. Однако, даже при его наличии выполнение может быть запрещено из-за ограничений безопасности. Дело в том, что в Windows 10 реализована политика выполнения, которая устанавливает правила для сценариев. Если установлено значение «Restricted», то запуск скриптов будет запрещен.
Добавление фрагмента кода
Если хотите выполнить сценарий на компьютере, не прибегая к изменению политики, то можете добавить фрагмент кода, который предоставит ему доступ.
В окне командного интерпретатора, вызываемого сочетанием Win + R, наберите Powershell и совместно нажмите Shift + Ctrl + Enter для предоставления администраторских прав.
Введите команду для выполнения определенного скрипта, например:
powershell -ExecutionPolicy ByPass -File script.ps1
Нажмите на Enter и проверьте, сохраняется ли проблема.
Изменение политики выполнения
Поскольку политика предоставляет доступ к Powershell для запуска определенного скрипта, если имеет значение Restricted, то полностью блокирует любые сценарии.
Режимы, которые можно задать для политики в зависимости от конкретной задачи:
- Restricted: запрещает в системе запуск любых скриптов;
- AllSigned: разрешает запускать только подписанные доверенным издателем;
- RemoteSigned: загруженные с интернета должны быть подписаны сертификатом доверенного издателя, остальные без ограничений;
- Unrestricted: ограничения отсутствуют.
Теперь, когда известны все уровни, можете выбрать один из них для выполнения конкретной задачи. Чтобы изменить ее, выполните следующие шаги:
В строке системного поиска наберите Powershell, щелкните правой кнопкой мыши на найденный результат и запустите от имени администратора.
В консоли запустите команду:
Set-ExecutionPolicy Remotesigned
Примечание: «RemoteSigned», которая рекомендуется для личного использования, можно заменить на другой уровень безопасности.
Затем подтвердите действие, чтобы изменить групповую политику на нужный уровень. Теперь ошибка не будет запрещать сценарный код.
Содержание
- Способ 1: Настройка локальной политики
- Способ 2: Редактирование реестра
- Способ 3: Консольная команда
- Вопросы и ответы
Способ 1: Настройка локальной политики
По умолчанию запуск сценариев PowerShell запрещен политикой выполнения функций средства, что обусловлено требованиями безопасности и призвано предотвратить возможность исполнения отдельных вредоносных скриптов в среде Windows. Изменить такое положение вещей в общем-то несложно, а основной способ это сделать подразумевает привлечение «Редактора локальной групповой политики» («РЛГП»).
«РЛГП» по умолчанию доступен только в Windows 10 редакций «Pro» и «Enterprise», пользователям «Home»-выпуска операционки с конечной целью запуска PowerShell-сценариев следует сразу переходить к рассмотрению инструкций «Способ 2» и «3» в этой статье.
- Открываем окно «Редактора локальной групповой политики». Проще всего это сделать введя запрос
Изменение групповой политикив системный «Поиск» Виндовс,
также возможно через оснастку «Выполнить» (открывается по нажатию «Win»+«R» на клавиатуре) – оправляем с её помощью на выполнение команду:
gpedit.mscЧитайте также: Запуск «Редактора локальной групповой политики» в Windows 10
- Задействовав средства левой части окна РЛГП, в разделе «Конфигурация компьютера» поочередно разворачиваем каталоги: «Административные шаблоны»,
затем из него — «Компоненты Windows».
- В содержимом «Компоненты Windows» находим и кликом выделяем каталог «Windows Powershell».
- Перемещаемся в область справа окна Редактора, кликаем правой кнопкой манипулятора (ПКМ) по наименованию политики «Включить выполнение сценариев».
В отобразившемся меню выбираем «Изменить».
- В открывшемся средстве изменения параметров политики «Включить выполнение сценариев» переводим расположенную в правой верхней части окна радиокнопку в положение «Включено».
Кроме того, переходим здесь в блок «Параметры:», щёлкаем по изначально пустому раскрывающемуся списку «Политика выполнения»,
выбираем в нём «Разрешать все сценарии».
- Завершив конфигурирование политики вышеуказанным образом, нажимаем «ОК».
На этом всё, закрываем окно средства изменения локальной групповой политики – возможность запуска, по сути, любых сценариев PowerShell в текущем экземпляре Windows 10 получена.

Способ 2: Редактирование реестра
Параметры политик выполнения сценариев ПоверШелл для локального компьютера, а также его текущего пользователя сохранены в главной базе данных настроек Виндовс 10 — системном реестре. Соответственно, изменив здесь значения отдельных записей, можно решить в том числе и задачу из заголовка этой статьи.
- Открываем «Редактор реестра». Существует множество способов это сделать, наиболее быстрые: отыскать ссылку на запуск приложения через системный «Поиск»,
отправить команду
regeditчерез оснастку «Выполнить».Подробнее: Способы открытия «Редактора реестра» в Windows 10
- Кликая по разворачивающим разделы из перечня слева в окне «Редактора реестра» элементам, переходим по следующему пути:
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsДругой метод перемещения в нужный раздел реестра: копируем путь к нему из текста этой статьи в буфер обмена Windows 10, затем вставляем данные в поле под строкой меню Редактора, нажимаем «Enter».
- Выделив (щелчком ЛКМ по наименованию в панели слева окна Редактора) расположенную по указанному выше пути папку «Windows», вызываем меню «Правка»,
кликаем в нём «Создать» — «Раздел».
- Далее вводим имя сформированного каталога – PowerShell,
нажимаем «Ввод» на клавиатуре.
- Переходим в правую часть окна Редактора, кликаем ПКМ в её свободной от значков и записей области, в открывшемся контекстном меню нажимаем «Создать» — «Параметр DWORD (32 бита)».
- Присваиваем созданному объекту наименование EnableScripts,
дважды щёлкаем по нему.
- В поле «Значение» отобразившегося окошка «Изменение параметра DWORD (32 бита)» вместо 0 пишем 1,
после этого кликаем «ОК».
- Вновь кликаем ПКМ в отображающей параметры из раздела реестра «PowerShell» области, теперь выбираем в меню «Создать» — «Строковый параметр».
- В качестве имени параметра вводим ExecutionPolicy,
после чего двойным кликом по получившемуся объекту открываем окошко его изменения.
- В поле «Значение:» вводим RemoteSigned,
щёлкаем «ОК» мышкой.
- На этом всё – закрываем окно «Редактора реестра», перезагружаем компьютер и можем приступать к отныне беспроблемному и практически ничем не ограничиваемому запуску сценариев PowerShell.

Способ 3: Консольная команда
Еще один метод устранения предусмотренных в Windows 10 преград для выполнения PowerShell-сценариев реализовать гораздо проще, нежели вышеописанные подходы, но решение в большей степени единоразовое (действует в рамках одного сеанса работы с консольной оболочкой). Подойдёт, когда нужно задействовать один-единственный скрипт рассматриваемого типа или это требуется редко.
- Запускаем приложение PowerShell от имени Администратора. Один из вариантов это сделать – средствами системной оснастки «Выполнить»:
- Нажимаем «Win»+«R» на клавиатуре, вводим в поле «Открыть» отобразившегося окошка такую команду:
рowershell - Далее нажимаем «Ctrl»+«Shift» на клавиатуре и, удерживая эти клавиши, кликаем «ОК» в окне «Выполнить» левой кнопкой мыши.
- Подтверждаем («Да») поступивший из системного модуля «Контроль учётных записей» запрос.
Читайте также: Запуск «PowerShell» в ОС Windows 10
- Нажимаем «Win»+«R» на клавиатуре, вводим в поле «Открыть» отобразившегося окошка такую команду:
- Вводим и запускаем команду перевода политики выполнения сценариев PowerShell в состояние, когда ею ничего не блокируется:
Set-ExecutionPolicy Bypass - Введя
Yи затем нажав «Enter», подтверждаем запрос системы «Вы хотите изменить политику выполнения?». - На этом всё – возможности выполнять сценарии теперь ничего не препятствует и так будет продолжаться до момента закрытия сессии ПоверШелл. Вводим в консоль путь на диске ПК, по которому расположен целевой исполняемый файл рассматриваемого типа, инициируем его запуск.


Читайте также: Как скачать ISO-образ Windows при помощи PowerShell-скрипта Fido
Еще статьи по данной теме:
Помогла ли Вам статья?
Если вы знаете, как писать простые сценарии PowerShell или пакетные сценарии, вы можете автоматизировать довольно много вещей в Windows 10. На самом деле, даже если вам нужно потратить немного времени на написание идеального сценария для чего-то, время будет сэкономлено, когда все будет готово. будет стоить времени, потраченного на его написание. Тем не менее, сценарии могут быть опасными: когда вы пытаетесь запустить сценарии в PowerShell, вы получаете довольно длинное сообщение об ошибке, которое, по сути, сообщает вам, что «выполнение сценариев отключено в этой системе».
Это мера безопасности в PowerShell для предотвращения запуска вредоносных сценариев и потенциального вреда для системы. Конечно, сценарий, который вы написали самостоятельно, не будет вредоносным и должен быть запущен. Чтобы решить эту проблему, вам необходимо изменить политику выполнения в PowerShell. Вот как.
Исправление запущенных скриптов отключено в этой системе
Откройте PowerShell с правами администратора и выполните следующую команду.
Get-ExecutionPolicy -List
Это покажет вам политику выполнения, установленную для вашего пользователя и вашего компьютера. Вероятно, что для обеих или, по крайней мере, для политики CurrentUser задано значение Restricted.
Чтобы исправить ошибку «запущенные сценарии отключены в этой системе», вам необходимо изменить политику для CurrentUser. Для этого выполните следующую команду.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Подтвердите, что вы хотите внести изменения, и вы сможете запустить сценарий.
Это должно позволить вам запускать большинство скриптов, однако, если вы по-прежнему получаете ту же ошибку, вам, вероятно, нужно изменить политику выполнения для машины. Для этого вы можете изменить предыдущую команду, но для этого вам потребуются права администратора.
Запустите эту команду.
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
Подтвердите, что вы хотите внести изменения, а затем попробуйте запустить сценарий.
Это должно помочь, если вы сами написали сценарий, если вы загрузили его в Интернете, и он не подписан, вам необходимо изменить политику выполнения на Unrestricted. Для этого замените «RemoteSigned» во всех вышеперечисленных командах на «Unrestricted». Будьте очень осторожны при запуске скриптов, если вы их загружаете. Они могут быть опасными.
Set-ExecutionPolicy
Это довольно простая команда для настройки политики выполнения в PowerShell. Эта команда может иметь четыре различных параметра или состояния: Restricted, AllSigned, RemoteSigned и Unrestricted.
Переключатель -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser», он применяется только к текущему пользователю, а когда вы вводите «LocalMachine», он применяется ко всей системе.
Что вы думаете об этой статье?
Most of the existing answers explain the How, but very few explain the Why. And before you go around executing code from strangers on the Internet, especially code that disables security measures, you should understand exactly what you’re doing. So here’s a little more detail on this problem.
From the TechNet About Execution Policies Page:
Windows PowerShell execution policies let you determine the conditions under which Windows PowerShell loads configuration files and runs scripts.
The benefits of which, as enumerated by PowerShell Basics — Execution Policy and Code Signing, are:
- Control of Execution — Control the level of trust for executing scripts.
- Command Highjack — Prevent injection of commands in my path.
- Identity — Is the script created and signed by a developer I trust and/or a signed with a certificate from a Certificate Authority I trust.
- Integrity — Scripts cannot be modified by malware or malicious user.
To check your current execution policy, you can run Get-ExecutionPolicy. But you’re probably here because you want to change it.
To do so you’ll run the Set-ExecutionPolicy cmdlet.
You’ll have two major decisions to make when updating the execution policy.
Execution Policy Type:
Restricted† — No Script either local, remote or downloaded can be executed on the system.AllSigned— All script that are ran require to be digitally signed.RemoteSigned— All remote scripts (UNC) or downloaded need to be signed.Unrestricted— No signature for any type of script is required.
Scope of new Change
LocalMachine† — The execution policy affects all users of the computer.CurrentUser— The execution policy affects only the current user.Process— The execution policy affects only the current Windows PowerShell process.
† = Default
For example: if you wanted to change the policy to RemoteSigned for just the CurrentUser, you’d run the following command:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Note: In order to change the Execution policy, you must be running PowerShell As Administrator.
If you are in regular mode and try to change the execution policy, you’ll get the following error:
Access to the registry key ‘HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell’ is denied. To change the execution policy for the default (LocalMachine) scope, start Windows PowerShell with the «Run as administrator» option.
If you want to tighten up the internal restrictions on your own scripts that have not been downloaded from the Internet (or at least don’t contain the UNC metadata), you can force the policy to only run signed scripts. To sign your own scripts, you can follow the instructions on Scott Hanselman’s article on Signing PowerShell Scripts.
Note: Most people are likely to get this error whenever they open PowerShell because the first thing PowerShell tries to do when it launches is execute your user profile script that sets up your environment however you like it.
The file is typically located in:
%UserProfile%My DocumentsWindowsPowerShellMicrosoft.PowerShellISE_profile.ps1
You can find the exact location by running the PowerShell variable
$profile
If there’s nothing that you care about in the profile, and don’t want to fuss with your security settings, you can just delete it and PowerShell won’t find anything that it cannot execute.
Most of the existing answers explain the How, but very few explain the Why. And before you go around executing code from strangers on the Internet, especially code that disables security measures, you should understand exactly what you’re doing. So here’s a little more detail on this problem.
From the TechNet About Execution Policies Page:
Windows PowerShell execution policies let you determine the conditions under which Windows PowerShell loads configuration files and runs scripts.
The benefits of which, as enumerated by PowerShell Basics — Execution Policy and Code Signing, are:
- Control of Execution — Control the level of trust for executing scripts.
- Command Highjack — Prevent injection of commands in my path.
- Identity — Is the script created and signed by a developer I trust and/or a signed with a certificate from a Certificate Authority I trust.
- Integrity — Scripts cannot be modified by malware or malicious user.
To check your current execution policy, you can run Get-ExecutionPolicy. But you’re probably here because you want to change it.
To do so you’ll run the Set-ExecutionPolicy cmdlet.
You’ll have two major decisions to make when updating the execution policy.
Execution Policy Type:
Restricted† — No Script either local, remote or downloaded can be executed on the system.AllSigned— All script that are ran require to be digitally signed.RemoteSigned— All remote scripts (UNC) or downloaded need to be signed.Unrestricted— No signature for any type of script is required.
Scope of new Change
LocalMachine† — The execution policy affects all users of the computer.CurrentUser— The execution policy affects only the current user.Process— The execution policy affects only the current Windows PowerShell process.
† = Default
For example: if you wanted to change the policy to RemoteSigned for just the CurrentUser, you’d run the following command:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Note: In order to change the Execution policy, you must be running PowerShell As Administrator.
If you are in regular mode and try to change the execution policy, you’ll get the following error:
Access to the registry key ‘HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell’ is denied. To change the execution policy for the default (LocalMachine) scope, start Windows PowerShell with the «Run as administrator» option.
If you want to tighten up the internal restrictions on your own scripts that have not been downloaded from the Internet (or at least don’t contain the UNC metadata), you can force the policy to only run signed scripts. To sign your own scripts, you can follow the instructions on Scott Hanselman’s article on Signing PowerShell Scripts.
Note: Most people are likely to get this error whenever they open PowerShell because the first thing PowerShell tries to do when it launches is execute your user profile script that sets up your environment however you like it.
The file is typically located in:
%UserProfile%My DocumentsWindowsPowerShellMicrosoft.PowerShellISE_profile.ps1
You can find the exact location by running the PowerShell variable
$profile
If there’s nothing that you care about in the profile, and don’t want to fuss with your security settings, you can just delete it and PowerShell won’t find anything that it cannot execute.











































