По умолчанию выполнение сценариев 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
Теперь при выполнении команд не нужно подтверждать производимые изменения.
Если вы знаете, как писать простые сценарии 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», он применяется ко всей системе.
Что вы думаете об этой статье?
В настоящее время в каждую Windows предустановлен PowerShell.
PowerShell — это не только консоль предоставляющая доступ к утилитам командной строки, но и мощное средство администрирования и автоматизации. В PowerShell реализовано множество команд и функций, которые могут добавляться как модули устанавливаемым программным обеспечением.
PowerShell поддерживает как выполнение отдельных команд, так и пакетные файлы с набором команд, то есть скрипты. Эти скрипты можно назвать аналогами файлов .bat для оболочки CMD (которая, кстати, по-прежнему доступна в Windows).
Но при попытке запуска скрипта PowerShell вас, вероятно, ждёт неприятный сюрприз. К примеру, моя попытка выполнить файл PowerShell с расширением .ps1:
.Invoke-SMBClient.ps1
Эта команда вызвала ошибку:
.Invoke-SMBClient.ps1 : Невозможно загрузить файл C:UsersMiAlDownloadsInvoke-TheHash-ma sterInvoke-SMBClient.ps1, так как выполнение сценариев отключено в этой системе. Для получе ния дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/f wlink/?LinkID=135170. строка:1 знак:1 + .Invoke-SMBClient.ps1 + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : Ошибка безопасности: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
Ключевой является информация:
Невозможно загрузить файл ....ps1, так как выполнение сценариев отключено в этой системе
Причина ошибки в том, что в системе Windows по умолчанию запрещено запускать пакетные файлы, скрипты PowerShell.
Как разрешить в Windows выполнение скриптов PowerShell
Проблема заключается в том, что политика выполнения скриптов запрещает выполнять эти самые скрипты. Узнать текущее значение политики можно командой:
Get-ExecutionPolicy
Для своей системы я получил значение:
Restricted
Чтобы разрешить выполнение файлов с расширением .ps1, то есть чтобы запустить скрипт PowerShell в Windows, выполните команду:
Set-ExecutionPolicy unrestricted
Когда поступит запрос, введите Y.
Данные команды нужно выполнять в PowerShell, а не в CMD.
Как запретить в Windows выполнение скриптов PowerShell
Чтобы вновь включить запрет на выполнение пакетных файлов в PowerShell достаточно выполнить команду:
Set-ExecutionPolicy Restricted
Опасно ли разрешать выполнение файлов со скриптами PowerShell в Windows?
При выполнении команды по изменению политика запуска скриптов каждый раз показывается сообщение:
Изменение политики выполнения Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies и расположенном по адресу https:/go.microsoft.com/fwlink/?LinkID=135170 . Вы хотите изменить политику выполнения? [Y] Да - Y [A] Да для всех - A [N] Н
Предупреждение кажется довольно страшным, но в самой справке, на которую дана ссылка, написано, что данная политика запрета запуска скриптов не является мерой безопасности, поскольку пользователь по-прежнему может выполнить команды одну за другой. Более того, у хакеров есть возможность обойти этот запрет и запустить скрипт даже при отключённой политике.
Как сказано в документации, это мера для предотвращения случайного выполнения скриптов PowerShell и случайных изменений.
То есть в целом изменение этой настройки не уменьшает уровень безопасности системы. Но если вы редко запускаете скрипты PowerShell, то можете установить уровень Restricted, то есть запрет выполнения сценариев.
Ошибка «»Set-ExecutionPolicy» не является внутренней или внешней командой, исполняемой программой или пакетным файлом»
Если при выполнении
C:Windowssystem32>Set-ExecutionPolicy unrestricted
вы получили ошибку
"Set-ExecutionPolicy" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
то это означает, что вы запускаете указанную команду в CMD (командная строка Windows), а не в PowerShell. Чтобы ошибка исчезла, откройте PowerShell и выполните команду там.
Ошибки «Отказано в доступе к разделу реестра «HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIds» и «Access to the path ‘C:Program FilesPowerShell7-previewpowershell.config.json’ is denied»
Во время выполнения команды
Set-ExecutionPolicy unrestricted
Вы можете столкнуться с ошибкой:
Set-ExecutionPolicy : Отказано в доступе к разделу реестра "HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell". Чтобы изменить политику выполнения для области (LocalMachine), используемой по умолчанию, запустите Windows PowerShell с параметром "Запуск от имени администратора". Чтобы изменить политику выполнения для текущего пользователя, выполните "Set-ExecutionPolicy -Scope CurrentUser". строка:1 знак:1 + Set-ExecutionPolicy unrestricted + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
В PowerShell 7.* ошибка выглядит так:
Set-ExecutionPolicy: Access to the path 'C:Program FilesPowerShell7-previewpowershell.config.json' is denied. To change the execution policy for the default (LocalMachine) scope, start PowerShell with the "Run as administrator" option. To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".
Причина ошибки в том, что указанную команду нужно выполнять с правами администратора.
Чтобы запустить PowerShell с правами администратора, нажмите «Win+x», либо правой кнопкой мыши по меню «Пуск».
И выберите «PowerShell (Администратор)» либо «Терминал Windows (Администратор)».
Смотрите также:
- Как установить PowerShell 7 в Windows 10
- Настройка рабочего окружения PowerShell в Windows и Linux
- Доступен новый Windows Terminal — он потрясающий
Связанные статьи:
- Не работает DNS через VPN в Windows 10 (РЕШЕНО) (94.4%)
- Windows 10: нет подключения к Интернету после подключения к VPN-серверу (РЕШЕНО) (94.4%)
- Ошибка ImageMagick в Windows: «magick: unable to open image »test’: No such file or directory @ error/blob.c/OpenBlob/3565. magick: no decode delegate for this image format `’ @ error/constitute.c/ReadImage/741.» (РЕШЕНО) (94.4%)
- Проигрыватель Windows не показывает или плохо показывает видео (РЕШЕНО) (81.1%)
- Ошибка «Файл слишком большой для файловой системы получателя» (РЕШЕНО) (81.1%)
- Что такое инструменты SysInternals и как их использовать? (RANDOM — 55.6%)
В операционной системе 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
— вернуть назад по умолчанию.
Смотрите еще:
- Что за папка ProgramData Windows 10
- Исправить ошибку Boot Device Not Found на ноутбуке или ПК
- Antimalware Service Executable (MsMpEng) — Грузит Систему
- Ошибка 0x80070490 в Центре обновления Windows 10
- Защитник Windows: Ограничить нагрузку на процессор
[ Telegram | Поддержать ]
В операционной системе 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 — это хорошее и продвинутое кроссплатформенное решение для автоматизации задач. Обычно очень легко создать и запустить сценарий PowerShell в системе Windows. Но вам может помешать сообщение об ошибке «Выполнение сценариев отключено в этой системе.», если вы запускаете сценарий в своей системе. Если системный администратор установил политику, блокирующую выполнение любых неавторизованных сценариев в системе, вы увидите указанное сообщение об ошибке. Вам нужно разблокировать политику или настроить реестр, и вы можете запускать любые сценарии.
Оглавление
Вы можете запустить код, обходящий текущую политику выполнения. Таким образом, вам не нужно вмешиваться в него, но вы можете запустить свой скрипт.
1. После одновременного нажатия клавиш клавиша Windows+S введите «powershell».
2. Затем щелкните правой кнопкой мыши «Windows PowerShell» и выберите «Запуск от имени администратора».
3. Когда появится экран Windows PowerShell, введите этот код и измените его соответствующим образом, а затем нажмите Enter, чтобы выполнить его.
powershell-ExecutionPolicy ByPass-File nameofthescript .ps1
[
Просто замените «nameofthescript.ps1» именем сценария, который вы пытаетесь запустить.
Пример. Предположим, имя скрипта — «myscript», команда будет —
powershell-ExecutionPolicy ByPass-File myscript.ps1
]
РЕКЛАМА
Таким образом, вы можете запустить любой скрипт, не изменяя текущую политику выполнения скрипта. Но если вы выполняете сценарии массово или создаете автоматизированный сценарий, это не сработает.
Для этого вам нужно найти следующее исправление.
Исправление 2 — изменить Политика выполнения
При желании вы можете изменить текущие параметры политики выполнения.
1. Снова нажмите клавишу Windows и введите «powershell».
2. Позже щелкните правой кнопкой мыши «Windows PowerShell» и нажмите «Запуск от имени администратора», чтобы открыть терминал с правами администратора.
3. Когда он откроется, введите эту команду, чтобы изменить политику выполнения в соответствии с вашим выбором.
Set-ExecutionPolicy RemoteSigned
[
Вы можете установить политику выполнения скрипта в четыре разных режима. Это –
Restricted – режим по умолчанию, в котором PowerShell не позволяет запускать какие-либо сценарии в системе.
AllSigned — в этом режиме разрешен запуск только подписанных и авторизованных сценариев.
RemoteSigned — в этом режиме все загруженные вами сценарии должны иметь подпись доверенная подпись.
Неограниченно. Вы можете запускать любой скрипт по своему усмотрению. Нет ограничений на доверенную подпись или доверенного издателя.
Пример. Предположим, вы хотите установить для параметров политики значение «RemoteSigned», команда будет такой:
Set-ExecutionPolicy RemoteSigned
]
После этого нажмите «Y» и нажмите Enter.
4. Если вы столкнулись с каким-либо сообщением об ошибке, просто запустите эту команду.
Set-ExecutionPolicy RemoteSigned-Scope CurrentUser
Снова напишите «Y» и нажмите Enter.
После этого вы можете легко запустить скрипт по своему усмотрению.
Протестируйте, запустив скрипт.
ПРИМЕЧАНИЕ –
Политика выполнения сценариев обычно ограничена, поскольку неправильно настроенные или неверные сценарии могут нанести непоправимый ущерб системе. Итак, как только вы закончите выполнение сценария, вы можете снова установить политику выполнения в режим «Ограниченный».
1. Получите доступ к PowerShell с правами администратора.
2. Теперь просто выполните этот единственный код, чтобы запретить выполнение любой политики в системе.
Set-ExecutionPolicy Restricted
3. Снова напишите «Y» и нажмите Enter.
После этого закройте окно PowerShell.
Исправить 3 — изменить Реестр
Если вы столкнулись с каким-либо сообщением об ошибке при изменении политики выполнения, вы можете отредактировать редактор реестра.
1. Просто введите «regedit.msc» в поле поиска на панели задач.
2. После этого нажмите «Редактор реестра», чтобы открыть его.
Внимание . Вы собираетесь внести изменения в свой реестр. Поскольку редактор реестра является очень важной частью вашей системы, вам следует заранее сделать резервную копию реестра.
Когда откроется редактор реестра, нажмите «Файл». Затем нажмите «Экспорт», чтобы создать новую резервную копию реестра в вашей системе.
Позже вы сможете использовать эту резервную копию, если что-то пойдет не так.
3. Теперь разверните левую часть следующим образом:
ComputerHKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShellShellIdsScriptedDiagnostics
4. Затем дважды нажмите на двоичное значение «ExecutionPolicy».
5. Просто напишите «Неограниченно» в поле «Значение данных:».
6. Затем нажмите «ОК», чтобы сохранить это изменение.
После этого закройте редактор реестра. После закрытия редактора реестра перезагрузите систему.
После перезагрузки компьютера вы можете легко запустить скрипт по вашему выбору.
Самбит — инженер-механик. По квалификации он любит писать о Windows 10 и решениях для самые странные возможные проблемы.
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.