По ссылке, которая указанна у сообщении об ошибке, идет описание политик выполнения.
Для запуска локальных скриптов, нужно установить минимум политику REMOTESIGNED, в этом случае можно будет запускать локальные не подписанные скрипты.
Для установки политики можно воспользоваться командой
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
Так же можно ограничить область применения данной политики, для этого можно воспользоваться параметром -Scope
. По умолчанию политика устанавливается для всех пользователей на локальном компьютере, однако с помощью значения CurrentUser
, можно ограничить применение только для текущего пользователя, а с помощью значения Process
применение ограничится текущим запущенным процессом PowerShell.
Таким образом для выполнения можно выполнить сначала команду:
> Set-ExecutionPolicy RemoteSigned -Scope Process
и затем запустить нужный скрипт.
По умолчанию выполнение сценариев 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
Теперь при выполнении команд не нужно подтверждать производимые изменения.
По ссылке, которая указанна у сообщении об ошибке, идет описание политик выполнения.
Для запуска локальных скриптов, нужно установить минимум политику REMOTESIGNED, в этом случае можно будет запускать локальные не подписанные скрипты.
Для установки политики можно воспользоваться командой
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
Так же можно ограничить область применения данной политики, для этого можно воспользоваться параметром -Scope
. По умолчанию политика устанавливается для всех пользователей на локальном компьютере, однако с помощью значения CurrentUser
, можно ограничить применение только для текущего пользователя, а с помощью значения Process
применение ограничится текущим запущенным процессом PowerShell.
Таким образом для выполнения можно выполнить сначала команду:
> Set-ExecutionPolicy RemoteSigned -Scope Process
и затем запустить нужный скрипт.
При переносе этого блога на хостинг 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.
По умолчанию выполнение сценариев 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 предустановлен 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%)
- Основы запуска и использования утилит командной строки в Windows (RANDOM — 63.4%)
Table of Contents
- Cause
- Resolution
- Option 1: Bypass ExecutionPolicy
- Option 2: Unblock-File cmdlet
- Option 3: File Properties
- Conclusion
When you download and attempt to run a PowerShell script (a .ps1 file extension) from the internet, you see the following 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 {script name}?
IMAGE01 (BLOCK01)
Cause
Windows prevents downloaded internet files from being runnable as part of built-in Windows security. This is designed to prevent malicious scripts from running on your machine. This error message will even appear when your
PowerShell ExecutionPolicy is set to Unrestricted. To adjust your execution policy settings, see
PowerShell Execution Policy Settings.
Resolution
The temporary solution to this problem is to click the Run once button each time you want to run the script. However, if you need to run this script frequently this warning message can be annoying. There are three permanent solutions to fix the
issue.
Option 1: Bypass ExecutionPolicy
As mentioned above, an Unrestricted execution policy does not prevent the error message from appearing. To disable all warning messages permanently for any downloaded internet files, you need to use the Bypass ExecutionPolicy. However, this command unblocks
every script you download, trustworthy or not.
To execute this command, open a PowerShell window with administrator privileges and run the following:
Set-ExecutionPolicy Bypass
You can also reset the ExecutionPolicy back to its default setting of Restricted using
Set-ExecutionPolicy Restricted
Option 2: Unblock-File cmdlet
Instead of changing permissions for every script in PowerShell (Option 1), we can instead unblock only the file we need. To do this, we need to run the Unblock-File cmdlet recommended in the warning message above. To unblock the file, run the following command:
Unblock-File script_name.ps1
NOTE: you do not need elevated permissions to run this command.
Option 3: File Properties
The final option is to change the properties of he file itself. Since the file was downloaded, Windows allows you access to change the file’s properties.To unblock the file:
- Browse to the file using Windows Explorer
- Right-click the file and select Properties.
- On the General tab, under Security, click the
Unblock checkbox. - Click OK.
IMAGE02
Conclusion
This article has shown you three ways to solve the issue of running blocked PowerShell scripts downloaded from the internet. It’s recommended you grant the least permissions possible (Option 2 or Option 3) before making sweeping changes (Option 1).
В операционной системе Windows 10 имеется мощный инструмент для управления и выполнения различных задач — это PowerShell. Эта консоль предназначена для администраторов, поскольку она позволяет им контролировать всю операционную систему с помощью сценариев (script). PowerShell используется многими фоновыми приложениями для внесения изменений в систему и это ставит под угрозу безопасность нашего ПК.
Сценарий (script) — простая программа написана в коде, который работает линейно на нашем компьютере. Мы можем создавать и выполнять собственные сценарии для автоматизации задач, или приложения могут выполнять их для выполнения определенных конфигураций и задач. По умолчанию Windows 10 не запрещает ни приложениям, ни нам запускать сценарии в системе, если они подписаны или являются «своими». Проблема возникает, когда мы запускаем свой скрипт, и нам выдает ошибку «Выполнение сценариев отключено в этой системе«. Это многоуровневая мера безопасности в 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 | Поддержать ]