PowerShell: невозможно загрузить файл, поскольку в системе отключено выполнение скрипта

{title}

Microsoft включила Windows PowerShell в качестве консоли управления по умолчанию в свою домашнюю (Windows 10) и корпоративную (Windows Server) операционные системы, чтобы выполнять сотни задач простым, безопасным и полнофункциональным способом.

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

По этой причине Microsoft предлагает несколько вариантов, которые мы, пользователи, можем выбирать для выполнения сценариев, от включения их всех независимо от их источника (ничего не рекомендуется) до полного их ограничения.

1. Просмотрите политики выполнения Windows PowerShell


Microsoft предоставляет нам ряд политик выполнения Windows PowerShell во всем, что касается сценариев, которыми они являются.

Restricted (Ограниченный)

Это правило по умолчанию, и с ним разрешено выполнение отдельных команд, но сценарии выполняться не будут, кроме этого, выполняются все файлы сценариев, включая файлы конфигурации и форматирования (.ps1xml), Файлы скриптов модуля (.psm1) и профили Windows PowerShell (.ps1).

Все подписано (только подписи)

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

RemoteSigned (Remote подпись)

Эта директива разрешает выполнение сценариев, для этого требуется цифровая подпись доверенного редактора в сценариях и файлах конфигурации, загружаемых из Интернета (включая программы электронной почты и обмена мгновенными сообщениями), не требует цифровых подписей в сценарии, которые были записаны на локальный компьютер, то есть не были загружены из Интернета и могут запускать сценарии, которые загружаются из Интернета и не подписаны, если они разблокированы, например, с помощью командлета Unblock-File.

Неограниченный (без ограничений)

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

байпас

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

Не определено (Не определено)

Этот параметр указывает, что в текущей области не задана политика выполнения, поэтому если политика выполнения во всех полях не определена, политика автоматического выполнения будет ограничена, что является политикой выполнения по умолчанию в Windows 10.

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

 Get-ExecutionPolicy -List 

{title}

2. Выполните сценарий с помощью команды ExecutionPolicy Windows PowerShell.

Шаг 1
Чтобы использовать эту опцию, у нас есть две опции для запуска в Windows PowerShell в качестве администраторов:

 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Set-ExecutionPolicy RemoteSigned -Force 

Шаг 2
После выполнения любой из этих строк мы можем проверить результат с помощью следующего командлета :

 Get-ExecutionPolicy -List 

$config[ads_text5] not found

{title}

3. Запустите скрипт в Windows PowerShell с помощью редактора реестра.

Шаг 1
Для этого метода рекомендуется создать резервную копию файлов или создать точку восстановления в случае какого-либо сбоя, затем мы будем использовать следующие ключи и выполнить следующее:

+ R

 смерзаться 

Шаг 2
В появившемся окне мы идем к следующему маршруту.

 HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell 

Шаг 3
Там мы будем щелкнуть правой кнопкой мыши на «Microsoft.PowerShell» и выбрать опцию «New / String Value»:

$config[ads_text6] not found

{title}

Шаг 4
Это новое значение будет называться «ExecutionPolicy»:

{title}

$config[ads_text5] not found

Шаг 5
Мы дважды щелкнем по этому значению и в поле «Информация о значении» введите «RemoteSigned»:

{title}

Шаг 6
Нажмите Accept, и мы увидим, что эта директива применяется:

{title}

4. Запустите скрипт в Windows PowerShell с групповыми политиками.

Шаг 1
Эта опция доступна для Pro и Enterprise выпусков Windows 10, и для доступа к ним мы будем использовать следующие ключи и выполнить следующее:

+ R

 gpedit.msc 

$config[ads_text6] not found

Шаг 2
Нажатие Enter покажет следующее окно и мы пойдем по следующему маршруту:

  • Конфигурация оборудования
  • Административные шаблоны
  • Компоненты Windows
  • Windows PowerShell

Шаг 2
Там мы выбираем и открываем политику под названием «Активировать выполнение скрипта»:

{title}

$config[ads_text5] not found

Шаг 3
В открывшемся окне мы активируем поле «Включено», а в поле «Политика выполнения» мы можем выбрать один из следующих вариантов. Как только директива определена, нажмите Apply и Accept, чтобы сохранить изменения.

  • Разрешить только подписанные скрипты
  • Разрешить локальные сценарии и подписанные удаленные сценарии
  • Разрешить все скрипты

{title}

Любой из этих методов позволит правильно использовать сценарии в среде Windows.