Файл не может быть загружен, так как в этой системе запрещено выполнение скрипта
Обновлено: 21.11.2024
При попытке запустить скрипт Powershell (PS1) может появиться следующая ошибка:
Файл xyz.ps1 не может быть загружен, так как в этой системе отключено выполнение скриптов. Подробнее см. в разделе «get-help about_signing». В строке:1 символ:2
Причиной этой ошибки является настройка безопасности на вашем компьютере, которая не позволяет вам выполнять сценарий. Это так называемая политика исполнения. По умолчанию для политики выполнения установлено значение Restricted. Этот параметр означает, что вы вообще не можете запускать какой-либо сценарий PS1.
Обзор уровней политики:
Ограничения: можно запускать отдельные командлеты, но не сохранять сценарии Powershell. Это значение по умолчанию.
AllSigned: сценарии могут выполняться, но должны иметь цифровую подпись, даже если они написаны на локальном компьютере. Запрашивает перед запуском скриптов от доверенных издателей.
RemoteSigned: сценарии, написанные на локальном компьютере, не нуждаются в цифровой подписи, но любой сценарий, загруженный извне (электронная почта, мгновенные сообщения, Интернет), должен иметь подпись для выполнения.
Неограниченно: любой скрипт может быть запущен, но скрипты, загруженные извне, будут запускаться с предупреждением.
Если вы работаете на настольном компьютере и просто экспериментируете с PowerShell, лучше всего установить для уровня политики значение Без ограничений. Это позволяет вам делать все с раздражающими границами безопасности. Только будьте осторожны, чтобы не запускать каждый скрипт, загруженный из Интернета :)
Если вы работаете в производственной среде и хотите запускать только самописные скрипты, уровень RemoteSigned должен быть достаточно свободным.
Чтобы изменить политику выполнения на неограниченную, введите следующую команду в Powershell
Set-ExecutionPolicy Unrestricted
Чтобы изменить политику выполнения на RemoteSigned (для запуска собственных сценариев), введите следующую команду в Powershell
Set-ExecutionPolicy RemoteSigned
Если у вас остались вопросы, не стесняйтесь оставлять комментарии. Если вы выберете получение уведомлений, когда кто-то опубликует ответ, вы сразу же получите электронное письмо после того, как кто-то ответит.
Я пытаюсь запустить cmd-файл, который вызывает скрипт PowerShell из cmd.exe, но получаю следующую ошибку:
Management_Install.ps1 не может быть загружен, так как в этой системе отключено выполнение скриптов.
Я выполнил эту команду:
Когда я запускаю Get-ExecutionPolicy из PowerShell, он возвращает Unrestricted .
.\Management_Install.ps1
CategoryInfo : NotSpecified: (:) [], PSSecurityException
FullyQualifiedErrorId : RuntimeException
Система — Windows Server 2008R2.
Что я делаю не так?
Стоит отметить, что политика выполнения имеет несколько областей действия, и разные способы запуска PowerShell могут привести к разным политикам. Чтобы просмотреть список политик, запустите Get-ExecutionPolicy -List .
43 Ответы 43
Если вы используете Windows Server 2008 R2, то существуют версии PowerShell x64 и x86, для каждой из которых должны быть установлены политики выполнения. Вы установили политику выполнения на обоих хостах?
Как администратор, вы можете задать политику выполнения, введя это в окно PowerShell:
Когда вы закончите, вы можете вернуть политике значение по умолчанию с помощью:
Вы можете увидеть ошибку:
Поэтому вам может понадобиться выполнить команду следующим образом (как показано в комментариях):
Для более безопасной политики задайте ее для фактического пользователя: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Set-ExecutionPolicy RemoteSigned не может быть первой строкой в сценарии. Если это так, выделите его и запустите выбранное только ИЗНАЧАЛЬНО, прежде чем запускать остальную часть вашего скрипта.
Я наткнулся на аналогичный вопрос на сайте SF, «Политика выполнения Powershell в SQL Server», заданный 10 октября 2014 года. Ответы там включали Get-ExecutionPolicy -List, который помог мне увидеть различные области действия. Команда Get-ExecutionPolicy не показывает все области. Import-Module SQLPS теперь работает с политиками, измененными следующим образом: ; .
Если я это сделаю, будет ли изменение действовать только в течение срока действия текущей оболочки PowerShell? Или больше?
Вы можете обойти эту политику для одного файла, добавив -ExecutionPolicy Bypass при запуске PowerShell
Это также очень удобно, если вы находитесь в учетной записи без прав администратора. Я сделал ярлык %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass на панели задач.
Это не работает для меня, я получаю то же самое разрешение, что и при обычном вызове. Вызов ps1 из .bat, выполнив команду script.ps1 | powershell - работает.
Цель политики выполнения — предотвратить двойное нажатие на PS1 и случайное выполнение чего-либо, чего они не хотели. Это произойдет с .bat-файлы
Не удается найти параметр, соответствующий имени параметра «Файл». Команда: Set-ExecutionPolicy -ExecutionPolicy Bypass -File .\file.ps1
У меня была аналогичная проблема, и я заметил, что cmd по умолчанию в Windows Server 2012 работал под управлением x64.
Для Windows 11, Windows 10, Windows 7, Windows 8, Windows Server 2008 R2 или Windows Server 2012 выполните следующие команды от имени администратора:
x86 (32-разрядная версия)
Откройте C:\Windows\SysWOW64\cmd.exe
Выполните команду powershell Set-ExecutionPolicy RemoteSignedx64 (64-разрядная версия)
Откройте C:\Windows\system32\cmd.exe
Выполните команду powershell Set-ExecutionPolicy RemoteSignedВы можете проверить режим, используя
- В CMD: эхо %PROCESSOR_ARCHITECTURE%
- В Powershell: [Среда]::Is64BitProcess
Большинство существующих ответов объясняют Как, но очень немногие объясняют Почему. И прежде чем вы начнете выполнять код от незнакомцев в Интернете, особенно код, который отключает меры безопасности, вы должны точно понимать, что вы делаете. Итак, немного подробнее об этой проблеме.
Политики выполнения Windows PowerShell позволяют определить условия, при которых Windows PowerShell загружает файлы конфигурации и запускает сценарии.
- Контроль выполнения. Управляйте уровнем доверия к выполнению скриптов.
- Command Highjack — предотвращение внедрения команд на моем пути.
- Идентификация. Является ли сценарий созданным и подписанным разработчиком, которому я доверяю, и/или подписанным сертификатом центра сертификации, которому я доверяю.
- Целостность. Скрипты не могут быть изменены вредоносной программой или злоумышленником.
Чтобы проверить текущую политику выполнения, вы можете запустить Get-ExecutionPolicy . Но вы, вероятно, здесь, потому что хотите это изменить.
Для этого запустите командлет Set-ExecutionPolicy.
При обновлении политики выполнения вам нужно будет принять два основных решения.
Тип политики выполнения:
- Ограничено † — в системе не может выполняться ни локальный, ни удаленный, ни загруженный сценарий.
- AllSigned: все запускаемые скрипты должны иметь цифровую подпись.
- RemoteSigned — все удаленные сценарии (UNC) или загруженные должны быть подписаны.
- Неограниченный – подпись для любого типа скрипта не требуется.
Область нового изменения
- LocalMachine † — политика выполнения влияет на всех пользователей компьютера.
- CurrentUser — политика выполнения влияет только на текущего пользователя.
- Процесс. Политика выполнения влияет только на текущий процесс Windows PowerShell.
Например: если вы хотите изменить политику на RemoteSigned только для CurrentUser, вы должны выполнить следующую команду:
Примечание. Чтобы изменить политику выполнения, вы должны запустить PowerShell от имени администратора. Если вы находитесь в обычном режиме и попытаетесь изменить политику выполнения, вы получите следующую ошибку:
Отказано в доступе к разделу реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell». Чтобы изменить политику выполнения для области по умолчанию (LocalMachine), запустите Windows PowerShell с параметром «Запуск от имени администратора».
Если вы хотите ужесточить внутренние ограничения для ваших собственных сценариев, которые не были загружены из Интернета (или, по крайней мере, не содержат метаданные UNC), вы можете заставить политику запускать только подписанные сценарии. Чтобы подписать собственные сценарии, следуйте инструкциям в статье Скотта Хансельмана «Подписание сценариев PowerShell».
Примечание. Большинство людей, скорее всего, получат эту ошибку при каждом открытии Powershell, потому что первое, что пытается сделать PS при запуске, — это выполнить сценарий вашего профиля пользователя, который настраивает вашу среду так, как вам нравится.
Файл обычно находится в:
Вы можете найти точное местоположение, запустив переменную powershell
Если в профиле нет ничего, что вас интересует, и вы не хотите возиться с настройками безопасности, вы можете просто удалить его, и powershell не найдет ничего, что он не может выполнить.
При попытке запустить сценарий Powershell (ps1) может возникнуть ошибка. Файл не может быть загружен, так как выполнение сценариев отключено в этой системе. Эта ошибка может появляться в Powershell, а также в ISE или Visual Studio Code (VS Code).
В этом сообщении блога объясняется:
- почему возникает эта ошибка.
- как защитить Powershell.
- как это исправить.
Торопитесь? Нет необходимости читать причину этой ошибки.Вы можете сразу перейти к Исправления для файла не могут быть загружены, так как в этой системе отключены запущенные скрипты
Причина
Powershell имеет встроенные функции безопасности. Одним из них является так называемая Политика исполнения. Эта политика может предотвратить выполнение сценариев и может оказаться полезной в определенных ситуациях. Например, в средах с высоким уровнем безопасности, где запуск неизвестных сценариев Powershell может быть рискованным. Чтобы просмотреть текущий общесистемный параметр политики выполнения, введите в Powershell следующее:
Get-ExecutionPolicy4 уровня безопасности
- Ограничения: запуск сценариев Powershell невозможен. Это настройка по умолчанию.
- AllSigned: сценарии можно запускать, но все они должны иметь цифровую подпись. Даже если вы сами написали скрипт на локальном компьютере.
- RemoteSigned: можно запускать локально написанные сценарии. Но сценарии извне (электронная почта, мгновенные сообщения, Интернет) должны быть подписаны доверенным издателем.
- Неограниченный: будет выполняться любой сценарий. Независимо от того, кто их создал и подписаны ли они.
Что касается исправлений, я предполагаю, что вы загрузили скрипт. Таким образом, я предоставляю опцию Unrestricted в каждом решении. Но если вы сами написали скрипт на своем текущем компьютере, вам лучше использовать RemoteSigned.
Невозможно загрузить исправления в файл, так как в этой системе отключены запущенные скрипты
Существует несколько способов исправить ошибку «Файл не может быть загружен, так как в этой системе отключены запущенные скрипты». У каждого есть свои плюсы и минусы. Но какой бы вариант вы ни выбрали, он все равно решит вашу проблему.
Как я отметил в 4-х уровнях безопасности, Unrestricted — это всегда решение, но RemoteSigned — более безопасный вариант.
Все исправления не зависят от ОС. Они будут работать на Windows 10, Windows 2016, Windows 2019. И даже на Windows 7.Установите ExecutionPolicy на компьютере (требуются права администратора)
Чтобы установить ExecutionPolicy для всех пользователей на вашем компьютере:
Примечание. После того как вы настроите политику выполнения, она будет применяться ко всем сеансам Powershell во всех приложениях. Вы используете Visual Studio Code или Powershell ISE? Новая настройка также применяется к этим приложениям!
Установить ExecutionPolicy для пользователя
У вас нет прав администратора на вашем компьютере? Вы по-прежнему можете установить для ExecutionPolicy значение Unrestricted в области действия пользователя. Вот как:
- Откройте Powershell.
- Введите Set-ExecutionPolicy Unrestricted -Scope CurrentUser и нажмите Enter.
- Подтвердите изменение политики выполнения, введя Y и нажав Enter.
- Готово! Теперь ваша учетная запись пользователя должна иметь возможность запускать скрипт.
Запуск сеанса Powershell с обходом ExecutionPolicy
Чтобы снизить безопасность Powershell только один раз, вы можете использовать переключатель обхода. Это позволяет вам временно запускать скрипт, сохраняя при этом более строгие настройки для всех остальных сеансов Powershell.
- Откройте командную строку.
- Введите PowerShell -ExecutionPolicy Bypass и нажмите Enter.
Powershell загружается внутри командной строки с пониженной безопасностью. - Перейдите к пути к вашему скрипту и запустите его.
- После закрытия окна Powershell обход закрывается вместе с ним.
Запустите скрипт в Powershell ISE (или Visual Studio Code)
На самом деле это не запуск скрипта. Вместо этого я бы назвал это идеальным обходным путем для обхода вашей строгой (компании) политики выполнения :)
В Powershell ISE можно открыть скрипт. После этого вы сможете просмотреть код в редакторе. Вместо запуска PS1 сделайте следующее:- выбрать весь код в скрипте.
- нажмите F8, чтобы запустить выбранный код.
Таким образом, вам не нужны дополнительные разрешения для выполнения вашей работы.
Просмотреть текущий уровень ExecutionPolicy
Чтобы просмотреть текущую ExecutionPolicy для всей системы, введите:
Get-ExecutionPolicyНо есть и другие области действия ExecutionPolicy. Тип:
Get-ExecutionPolicy -list- Машинная политика (определяется вашим системным администратором).
- UserPolicy (также определяется вашим системным администратором)
- Процесс (обход, при запуске от имени PowerShell -ExecutionPolicy Bypass)
- CurrentUser (если Executionpolicy был установлен с параметром -Scope CurrentUser)
- LocalMachine (если Executionpolicy была задана без дополнительных аргументов)
Назад в 2008 год
В 2008 году я написал аналогичную запись в блоге о политике выполнения в Powershell. В Powershell v2 код ошибки был другим:
Файл не может быть загружен, так как при этой системной ошибке отключено выполнение скриптов
Powershell v3 и более поздние версии имели новые возможности.И ошибка была изменена на «Файл не может быть загружен, так как в этой системе отключены запущенные скрипты».Если PowerShell выдает сообщение об ошибке «Файл не может быть загружен, так как выполнение сценариев отключено в этой системе», вам необходимо включить выполнение сценариев на вашем компьютере с Windows 11/10. Причина этой ошибки заключается в том, что у вашей учетной записи пользователя недостаточно прав для выполнения этого скрипта. Это не означает, что вам нужно иметь разрешения уровня администратора, это также означает, что вам также нужно быть неограниченным для запуска этих типов сценариев или командлетов PowerShell
PowerShell не может быть загружен, так как в этой системе отключено выполнение скриптов
Есть только один способ выполнить эту задачу. Вам нужно сделать политику выполнения неограниченной
.Для этого мы сначала проверим, какие политики установлены для отдельных групп пользователей на вашем компьютере.
Для этого запустите, нажав комбинацию кнопок WINKEY + X, или щелкните правой кнопкой мыши кнопку «Пуск» и выберите Windows Powershell (Admin) или найдите Powershell в поле поиска, щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора». Нажмите «Да» для получения запроса UAC или контроля учетных записей. Затем окно Windows Powershell, наконец, будет открыто. Теперь введите следующую команду, чтобы получить список политик выполнения для всех областей на вашем компьютере,
Это поместит в список группы пользователей и их статус политики выполнения.
В столбце Scope вам нужно обратить внимание на LocalMachine.
Если вы обнаружите, что для его политики выполнения задано значение Не определено или Ограничено, ваша проблема отслежена.
Теперь вам нужно установить для параметра Execution Policy значение Unrestricted.
Для этого вам нужно ввести следующую команду в том же окне сеанса PowerShell,
Это даст вам сообщение с запросом различных разрешений, для которых вам нужно либо нажать Y, чтобы сказать Да всем сообщениям по отдельности, либо нажать клавишу A, чтобы сказать Да em> ко всем сообщениям одновременно.
Если эта команда выдает ошибку, вы также можете принудительно изменить политику выполнения, введя следующую команду:
Это, наконец, установит Политику выполнения для ваших скриптов и командлетов PowerShell как неограниченную.
Теперь это должно устранить ошибку PowerShell, которая гласит: "Файл не может быть загружен, поскольку в этой системе отключены запуск скриптов".
Это помогло вам?
Дата: 7 марта 2021 г. Метки: PowerShell
Похожие сообщения
Команда Install-Module была найдена в модуле PowerShellGet, но модуль не может быть загружен
Как экспортировать список служб Windows с помощью командной строки
Доступ к PowerShell Get-Appxpackage запрещен, не распознан или не работает
[электронная почта защищена]
Аюш стал энтузиастом Windows с того дня, как у него появился первый компьютер с Windows 98SE. Он является активным участником программы предварительной оценки Windows с первого дня и теперь является MVP программы предварительной оценки Windows. Он тестировал предварительные версии сервисов на своем ПК с Windows 10, устройствах Lumia и Android.
Если во время выполнения сценария PowerShell выполнение сценариев отключено в этой системе, причина в том, что политика выполнения PowerShell по умолчанию настроена как ограниченная и не позволяет запускать сценарий.
запуск скриптов в этой системе отключен
Сообщение об ошибке PowerShell Scripts Disabled, как показано ниже
В PowerShell реализованы встроенные функции безопасности. Политика выполнения PowerShell — это функция безопасности, которая контролирует условия запуска сценариев и загрузки конфигурации. Политика выполнения в PowerShell настроена таким образом, чтобы избежать запуска вредоносных скриптов в вашей системе.
В этой статье я объясню различные способы исправления того, что файл не может быть загружен из-за того, что запуск скриптов отключен в этой системе.
Давайте разберемся с каждым из решений, позволяющих выполнять запущенный сценарий PowerShell с использованием различных политик выполнения.
Решение. Запуск скриптов в этой системе отключен
Политика выполнения PowerShell в ограниченном режиме позволяет избежать запуска скрипта для обеспечения безопасности.
Полезный совет: используйте Get-ExecutionPolicy, чтобы узнать политику по умолчанию, применяемую в вашей системе.
Использование политики выполнения RemoteSigned
Политика выполнения RemoteSigned является более безопасным вариантом. Если он включен, он позволяет запускать локальные сценарии. Все остальные скрипты извне требуют подписи доверенного издателя.
- Настройте политику выполнения RemoteSigned
- Позволяет запускать локальный скрипт.
- Теперь, если вы попытаетесь запустить файл .ps1, он не выдаст вам, что работающий скрипт отключен из-за этой системной ошибки.
Полезный совет: как исправить ошибку сценария без цифровой подписи в PowerShell!
Использование политики неограниченного выполнения
UnRestricted — это политика выполнения по умолчанию, установленная в системе, отличной от Windows. Если вы включили эту политику в системе, PowerShell сможет запускать любой неподписанный файл сценария.
Вы можете изменить политику выполнения с помощью командлета Set-ExecutionPolicy.
- Предупреждает администратора об изменении политики и угрозах безопасности, связанных с неограниченным режимом.
- Если вы выберете вариант «Да» или «Да для всех», будет применена политика.
- После настройки политики выполнения UnRestricted, если вы попытаетесь запустить файл ps1, это не приведет к отключению запущенного сценария из-за системной ошибки.
Set-ExecutionPolicy Unrestricted для включения скрипта
Полезный совет: как использовать многострочную команду в PowerShell!
Использование обходной политики выполнения
При использовании обходной политики выполнения ничего не блокируется, и если вы попытаетесь запустить скрипт, он не выдаст предупреждение или запрос на подтверждение.
При использовании политики ByPass сценарии выполняются временно с более низким уровнем безопасности.
- запускает файл сценария ps1 с более низким уровнем безопасности и выполняет его.
- Как только вы закроете сеанс PowerShell, он также закроется вместе с ним.
ByPass – для исправления запущенных скриптов, отключенных в этой системе
Использование PowerShell ISE
Если вы не хотите устанавливать политику выполнения и хотите запускать скрипт внутри файла ps1, лучше всего открыть файл скрипта в PowerShell ISE.
Выделите весь код в скрипте и нажмите кнопку F8, чтобы выполнить скрипт.
Примечание: не используйте F5 для выполнения, иначе он попытается запустить файл ps1 и выдаст ошибку, что файл не может быть загружен.
Выберите Code-F8, чтобы исправить ошибку загрузки файла
Таким образом, при этой системной ошибке вам не потребуются какие-либо разрешения, или какой-либо запущенный скрипт будет отключен.
Полезный совет: как добавить новую строку в строку или переменную в PowerShell!
Заключение
Я надеюсь, что приведенная выше статья об исправлении файла не может быть загружена, потому что выполнение сценариев отключено при этой системной ошибке с помощью set-executionpolicy, полезного для решения вашей проблемы.
Используйте политику выполнения RemoteSigned, чтобы избежать запуска каких-либо вредоносных сценариев, или, если сценарий является локальным, откройте сценарий PowerShell, выберите весь код и нажмите F8, чтобы выполнить его.
Дополнительные темы о командах PowerShell Active Directory и основах PowerShell можно найти на домашней странице ShellGeek.
Читайте также: