Главная
» WINDOWS
»
Как исправить ошибку «Запуск скриптов отключен в этой системе» в PowerShell на Windows 10
Как исправить ошибку «Запуск скриптов отключен в этой системе» в PowerShell на Windows 10
Чтобы исправить ошибку «Запуск скриптов отключен в этой системе» на персональном компьютере с Windows 10, установите для вашей учетной записи пользователя режим RemoteSigned в PowerShell , а затем запустите скрипт из его папки. Откройте Windows PowerShell и введите:
Подтвердите изменение, когда появится соответствующий запрос. Это относится только к вашей учетной записи Windows и не требует окна администратора. Если вам нужно запустить доверенный скрипт только один раз, используйте вместо этого опцию временной сессии, указанную ниже.
1. Проверьте, какая политика выполнения блокирует выполнение скрипта.
В том же приложении PowerShell, где вы видели ошибку, выполните следующую команду:
Get-ExecutionPolicy -List
Эта команда выводит список политик для групповой политики, текущего сеанса, вашей учетной записи и компьютера. RestrictedОна позволяет выполнять отдельные команды, но блокирует скриптовые файлы; это политика по умолчанию для клиентских компьютеров Windows, если не задана другая политика. PowerShell использует наиболее конкретную применимую настройку, при этом приоритет имеют параметры групповой политики.
Перед изменением полиса проверьте перечисленные области действия.
Политика выполнения — это функция безопасности, которая помогает предотвратить непреднамеренный запуск скриптов, но Microsoft описывает её скорее как многоуровневую защиту, а не как границу безопасности. Скрипт всё ещё может быть опасным, поэтому проверьте его код и исходный код, прежде чем разрешить его запуск. См. руководство Microsoft по политике выполнения Windows PowerShell 5.1 .
2. Разрешите использование локальных скриптов для вашей учетной записи.
Для скриптов, которые вы создаете или которым доверяете, установите политику на уровне пользователя следующим образом RemoteSigned:
Когда PowerShell спросит, хотите ли вы изменить политику выполнения, введите Yи нажмите Enter, если вы намерены продолжить. Изменения вступят в силу немедленно; перезапускать PowerShell не нужно. CurrentUserЭто повлияет только на вашу учетную запись и не изменит LocalMachineобласть действия по умолчанию, которая применяется ко всем и требует окна PowerShell с правами администратора.
При появлении соответствующего запроса подтвердите изменение параметра RemoteSigned, относящееся только к данной учетной записи.
RemoteSignedРазрешает запуск локальных скриптов, не помеченных как загрузки из интернета. Для этого требуется, чтобы загруженные скрипты имели доверенную цифровую подпись, если вы намеренно не разблокируете конкретный файл. Избегайте изменения политики в Unrestrictedкачестве Bypassобщего решения: эти настройки позволяют запускать больше скриптов с меньшим количеством предупреждений.
3. Запустите скрипт из его папки.
Перейдите в папку, содержащую .ps1файл, затем добавьте ./(или в стиле Windows .\) перед его именем. Например:
Set-Location 'C:\Scripts'
.\MyScript.ps1
PowerShell не запускает файл автоматически из текущего каталога, если вы вводите только его имя. Если путь содержит пробелы или вы запускаете его из другой папки, используйте оператор вызова и заключите полный путь в кавычки:
& 'C:\Scripts\My Script.ps1'
Проверьте действующую политику, затем вызовите скрипт, указав путь к нему.
4. Если загруженный скрипт по-прежнему заблокирован
При использовании этой RemoteSignedполитики неподписанный скрипт, загруженный из интернета, может оставаться заблокированным даже после её изменения. Сначала проверьте скрипт и убедитесь, что вы доверяете его источнику. Если да, разблокируйте только этот файл:
Используйте правильный путь, если файл находится в другом месте. Unblock-FileЭта команда удаляет метку загрузки файла из интернета; она не проверяет код и не делает небезопасный скрипт безопасным. Компания Microsoft описывает это поведение в справочнике Windows PowerShell 5.1 Unblock-File .
Разблокируйте только проверенный файл, источнику которого вы доверяете.
Используйте временную политику в течение одной сессии.
Если вам не нужна постоянная настройка для каждого пользователя, закройте текущее окно PowerShell и откройте новое. Затем выполните следующую команду перед скриптом:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Данная Processобласть действия применяется только к текущей сессии PowerShell и ее дочерним процессам; закрытие окна очищает ее. Тем не менее, это по-прежнему соответствует RemoteSignedправилам, поэтому загруженный неподписанный файл может потребовать проверки и индивидуальной разблокировки. Справочник по команде Set-ExecutionPolicy объясняет доступные области действия и значения политики.
Если ошибка сохраняется
Запустите команду Get-ExecutionPolicy, чтобы увидеть действующую политику и Get-ExecutionPolicy -Listпроверить, что ею управляет. Если MachinePolicyпараметр UserPolicyустановлен, выполнение скриптов контролируется групповой политикой организации. Не пытайтесь его отменить; обратитесь к администратору.
Убедитесь, что вы изменили политику в той же версии PowerShell, которую используете для запуска скрипта. Windows PowerShell 5.1 ( powershell.exe) и PowerShell 7 ( pwsh.exe) хранят параметры политики отдельно.
Если вы хотите позже отменить изменение, применяемое к каждому пользователю, выполните команду Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser. Это очистит только CurrentUserпараметр; действующая политика вернется к другой настроенной области действия или, если таковой не существует в Windows 10, к Restricted.
Для большинства персональных систем Windows 10 достаточно запускать локальные скрипты, RemoteSignedсохраняя CurrentUserпри этом проверку скриптов, помеченных как загруженные. Ограничивайте область действия, проверяйте незнакомый код и оставьте централизованное управление настройками вашему ИТ-администратору.