Так как выполнение сценариев отключено в этой системе
Перейти к содержимому

Так как выполнение сценариев отключено в этой системе

  • автор:

Так как выполнение сценариев отключено в этой системе

Фото Григорьева Ивана

��Добро пожаловать! Меня зовут Григорьев Иван, я Full Stack Developer. В основном пишу на PHP (Nette, Laravel), Python (Django, DRF), Vue (Quasar Framework). Опыт профессиональной разработки более 10 лет.

��Работаю в компании MACRO разработчиком. В свободное время оказываю консультации по разработке ПО.

✏ Пишу о:

Как включить выполнение сценариев PowerShell

image from Как включить выполнение сценариев PowerShell

При переносе этого блога на хостинг Firebase я столкнулся с ошибкой PowerShell, которая говорила о невозможности загрузки файла, из-за которой у меня отказывались работать инструменты firebase-tools.

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

Выключение запрета выполнения сценариев

Для решения проблемы достаточно выполнить команду Set-ExecutionPolicy unrestricted и выбрать необходимую опцию. В моем случае я выбрал A (это небезопасно!), но можно и рекомендуется выбирать Y , что бы система каждый раз спрашивала разрешение на запуск скриптов.

Настройка политики запуска скриптов (Execution Policy) PowerShell

date03.06.2020
useritpro
directoryPowerShell, Windows 10, Windows Server 2016
commentsкомментариев 8

По-умолчанию настройки Windows запрещают запуск скриптов PowerShell. Это необходимо для предотвращения запуска вредоносного кода на PowerShell. Настройки политик запуска PowerShell скриптов определяются в Execution Policy. В этой статье мы рассмотрим доступные политики запуска PS скриптов, как изменить Execution Policy и настроить политики использования PowerShell скриптов на компьютерах в домене.

Выполнение PowerShell скриптов запрещено для данной системы

При попытке выполнить PowerShell скрипт (файл с расширением PS1) на чистой Windows 10, появляется ошибка:

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

Текущее значение политики выполнения скриптов PowerShell на компьютере можно получить командой:

Get-ExecutionPolicy

Доступны следующие значения PowerShell Execution Policy:

Как разрешить запуск скриптов PowerShell с помощью Execution Policy?

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

Например, разрешим запуск локальных скриптов:

Подтвердите изменение политики запуска PS1 скриптов, нажав Y или A.

Set-ExecutionPolicy RemoteSigned разрешить запуск локальных powershell скриптов

Чтобы запрос не появлялся, можно использовать параметр Force.

Set-ExecutionPolicy RemoteSigned –Force

Если вы установили значение политики PowerShell Execution Policy в Unrestricted, то при запуске удаленных скриптов из сетевых каталогов по UNC пути, скачанных из интернета файлов, все равно будет появляться предупреждение:

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

Также следует различать различные области действия политик выполнения скриптов 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 scopes области действия

Значение политики выполнения, которые вы задаете с помощью командлета Set-ExecutionPolicy для областей CurrentUser и LocalMachine, хранятся в реестре. Например, выполните командлет:

Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restricted –Force

Откройте ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell и проверьте значение REG_SZ параметра ExecutionPolicy. Оно изменилось на Restricted (допустимые значения параметра Restricted, AllSigned, RemoteSigned, Bypass, Unrestricted и Undefined).

ExecutionPolicy в реестре

Аналогичные настройки для области CurrentUser находятся в разделе реестра пользователя HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell.

Отметим, что чаще всего в корпоративной среде используется ExecutionPolicy со значением AllSigned на уровне LocalMachine. Это обеспечивает максимальный баланс между безопасностью и удобством. Для личного пользования на компьютере можно использовать RemoteSigned. Ну а Bypass политику лучше использовать только для запуска отдельных задач (например для запуска скриптов через GPO или заданий планировщика).

Настройка PowerShell Execution Policy с помощью групповых политик

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

  1. С помощью редактора доменных GPO (gpmc.msc) создайте новую GPO (или отредактируйте) существующую и назначьте ее на OU с компьютерами, к которым нужно применить политику запуска PowerShell скриптов;
  2. В редакторе политики перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows PowerShell и найдите политику Turn on Script Execution (Включить выполнение сценариев);

групповая политика Turn on Script Execution

  • Allow only signed scripts (Разрешать только подписанные сценарии) — соответствует политике AllSigned;
  • Allow local scripts and remote signed scripts (Разрешать локальные и удаленные подписанные сценарии) — соответствует политике PS RemoteSigned;
  • Allow all scripts (Разрешать все сценарии) — политика Unrestricted.

После настройки политики выполнения через 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

Способы обхода политики PowerShell Execution

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

Можно с помощью Get-Content получить содержимое скрипта и перенаправить его в стандартныq поток ввода консоли PS.

powershell выполнение сценариев отключено в этой системе

если выполнять из C:\Windows\system32 то все хорошо, если с D:\SCRIPTS\sc.ps1 то все не хочет, как это можно исправить?

Keeplod's user avatar

Открываем терминал от админа.

Пишем и запускаем: Set-ExecutionPolicy RemoteSigned

На вопрос отвечаем: A (Да для всех)

Serg The Bright's user avatar

По ссылке, которая указанна у сообщении об ошибке, идет описание политик выполнения.

Для запуска локальных скриптов, нужно установить минимум политику REMOTESIGNED, в этом случае можно будет запускать локальные не подписанные скрипты.

Для установки политики можно воспользоваться командой

Так же можно ограничить область применения данной политики, для этого можно воспользоваться параметром -Scope . По умолчанию политика устанавливается для всех пользователей на локальном компьютере, однако с помощью значения CurrentUser , можно ограничить применение только для текущего пользователя, а с помощью значения Process применение ограничится текущим запущенным процессом PowerShell.

Как исправить «выполнение сценариев отключено в этой системе» в PowerShell в Windows 10

Если вы знаете, как писать простые сценарии PowerShell или пакетные сценарии, вы можете автоматизировать довольно много вещей в Windows 10. На самом деле, даже если вам нужно потратить немного времени на написание идеального сценария для чего-то, время будет сэкономлено, когда все будет готово. будет стоить времени, потраченного на его написание. Тем не менее, сценарии могут быть опасными: когда вы пытаетесь запустить сценарии в PowerShell, вы получаете довольно длинное сообщение об ошибке, которое, по сути, сообщает вам, что «выполнение сценариев отключено в этой системе».

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

Исправление запущенных скриптов отключено в этой системе

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

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

Чтобы исправить ошибку «запущенные сценарии отключены в этой системе», вам необходимо изменить политику для CurrentUser. Для этого выполните следующую команду.

Подтвердите, что вы хотите внести изменения, и вы сможете запустить сценарий.

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

Запустите эту команду.

Подтвердите, что вы хотите внести изменения, а затем попробуйте запустить сценарий.

Это должно помочь, если вы сами написали сценарий, если вы загрузили его в Интернете, и он не подписан, вам необходимо изменить политику выполнения на Unrestricted. Для этого замените «RemoteSigned» во всех вышеперечисленных командах на «Unrestricted». Будьте очень осторожны при запуске скриптов, если вы их загружаете. Они могут быть опасными.

Set-ExecutionPolicy

Это довольно простая команда для настройки политики выполнения в PowerShell. Эта команда может иметь четыре различных параметра или состояния: Restricted, AllSigned, RemoteSigned и Unrestricted.

Переключатель -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser», он применяется только к текущему пользователю, а когда вы вводите «LocalMachine», он применяется ко всей системе.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *