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

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

  • автор:

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

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

��

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

��

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

✏ Пишу о:

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

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

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

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

PS C:\_projects\ivanscm.name> firebase init firebase : Невозможно загрузить файл C:\Users\ivans\AppData\Roaming\npm\firebase.ps1, так как выполнение сценариев откл ючено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft. com/fwlink/?LinkID=135170. строка:1 знак:1 + firebase init + ~~~~~~~~  + CategoryInfo : Ошибка безопасности: (:) [], PSSecurityException  + FullyQualifiedErrorId : UnauthorizedAccess 

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

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

PS C:\_projects\ivanscm.name> Set-ExecutionPolicy unrestricted  Изменение политики выполнения Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies и расположенном по адресу https:/go.microsoft.com/fwlink/?LinkID=135170 . Вы хотите изменить политику выполнения? [Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка (значением по умолчанию является "N"):A 

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

Для включения запрета выполните Set-ExecutionPolicy Restricted .

Ознакомится подробнее можно в документации на сайте Microsoft.

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

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

Невозможно загрузить файл D:\SCRIPTS\sc.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу http://go.microsoft.com/fwlink/?LinkID=135170. + CategoryInfo : Ошибка безопасности: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : UnauthorizedAccess 
$ipv4 = (Test-Connection -ComputerName $env:computername -count 1).ipv4address.IPAddressToString $num = $ipv4.split(".")[-1] $ie = Invoke-WebRequest -Uri "http://****/indata.php?nt=$num" -Method POST -ContentType "text/plain; charset=utf-8" 

Отслеживать
задан 22 янв 2019 в 11:55
641 1 1 золотой знак 6 6 серебряных знаков 15 15 бронзовых знаков
Переходил по указанному адресу? about_Execution_Policies
22 янв 2019 в 11:57
Да там сказано через Set-ExecutionPolicy Unrestricted но это ничем хорошим не закончится
22 янв 2019 в 11:59
Там кроме Unrestricted еще 5 политик есть
22 янв 2019 в 12:01
там только либо разрешить всем сценариям работать либо нет, можно как то работать с одним сценарием?
22 янв 2019 в 12:02
можно разрешить на текущий сеанс только.
22 янв 2019 в 12:05

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

  • Открываем терминал от админа.
  • Пишем и запускаем: Set-ExecutionPolicy RemoteSigned
  • На вопрос отвечаем: A (Да для всех)

Отслеживать
ответ дан 2 ноя 2019 в 8:59
Serg The Bright Serg The Bright
1,486 1 1 золотой знак 9 9 серебряных знаков 7 7 бронзовых знаков
Это единственный во всем интернете, включая англоязычный, простой и верный ответ.
4 дек 2019 в 12:57
Спасибо за ответ!
8 ноя 2020 в 10:46

Единственное что тут можно добавить — это рекомендацию: если это нужно для разовой установки чего-то — то лучше потом вернуть состояние в стандартное: Set-ExecutionPolicy Default. Это поможет избежать вредоносного ПО 🙂

2 дек 2020 в 9:06

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

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

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

Set-ExecutionPolicy -ExecutionPolicy

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

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

> Set-ExecutionPolicy RemoteSigned -Scope Process 

и затем запустить нужный скрипт.

Решение ошибки VS Code «… выполнение сценариев отключено в этой системе…»

Ошибка VS Code «… выполнение сценариев отключено в этой системе…» — довольна частая ошибка у всех, кто только начинает работать с VS Code. Ошибка связана с тем, что у Вас отключено выполнение сценариев в целях безопасности на Вашей Windows.

В интернете Вы найдете уйму всяких инструкций, большинство которых, скорее всего, Вам не помогут, и ошибка все равно будет появляться. Решение проблемы заключается в том, чтобы заменить терминал в VS Code на стандартный cmd.exe.

VS Code

Замена терминала в VS Code, установленного по умолчанию

Итак, выполняем следующие действия, чтобы решить проблему с отключенными сценариями в VS code.

  • Открываем VS Code
  • Находясь в программе нажимаем клавишу F1 и в появившемся поле поиска вбиваем фразу: «Terminal: Select Default Profile».
  • В появившихся результатах выбираем терминал с окончание cmd.exe

Собственно и все. Теперь все должно работать. Если есть какие-то иные решения или вопросы — оставляйте их в комментариях, давайте вместе их разберем.

Windows PowerShell. Выполнение сценариев отключено в этой системе

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

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

PowerShell имеет несколько режимов выполнения, которые определяют, какой тип кода разрешается выполнять. Существует 5 различных режимов выполнения:

  1. Ограниченный (Restricted) — значение по умолчанию. Блокируется выполнение любых скриптов и разрешается работа интерактивных команд.
  2. Все подписанные (All Signed) — разрешено выполнение скриптов, имеющих цифровую подпись.
  3. Удаленные подписанные (Remote Signed) — локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
  4. Неограниченный (Unrestricted) — разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.
  5. Обходной (Bypass) — ничего не блокируется, никакие предупреждения и запросы не появляются.

По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает как интерактивная оболочка. Если вы ранее не настраивали PowerShell, то вместо работы скрипта вы увидите сообщение об ошибке, написанное красным шрифтом как на скриншоте ниже.

Самым безопасным способом решения этой проблемы является – изменение политики выполнения на неограниченную, запуск скрипта, и затем обратный возврат к ограниченной политике.

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

После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y ( Да ).

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

После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y ( Да )

Далее ниже представлены все команды для изменения политики выполнения.

Блокируется выполнение любых скриптов. Значение по умолчанию.

Разрешено выполнение скриптов, имеющих цифровую подпись.

Скрипты, подготовленные на локальном компьютере, можно запускать без ограничений, скрипты, загруженные из Интернета — только при наличии цифровой подписи.

Разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.

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

Для выполнения выше представленных команд без подтверждения изменения, воспользуйтесь параметром -Force , например выполните команду:

Теперь при выполнении команд не нужно подтверждать производимые изменения.

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

Правдолюб 29.09.2022 в 21:23

при запуске сценария в консоли ISE все работает.
правой кнопкой на файл .ps1 — Выполнить с помощью Powershell — работает
двойной клик на файл .ps1 — не работает. мелькает черное/синее окно и ничего.
Win —>Powershell —> расположение файла —> х64 и х86 —> свойства -дополнительно запускать от имени администратора — включено.
.ps1 —> свойства — Приложение — WindowsPowerShell
Set-executionpolicy Unrestricted.
Что я делаю не так? не могу запустить файл скрипта двойным кликом. Прошу помощи

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

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