Home Без рубрики Cannot be loaded because its operation is blocked by software restriction policies, such as those created by using Group Policy

Cannot be loaded because its operation is blocked by software restriction policies, such as those created by using Group Policy

by admin
136 views
windows server 2016

Я совершенно уверен, что все, кто уже устанавливал модули PowerShell, знают эту ошибку при запуске Import-Module:

Import-Module : File C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\11.3.0.13964823\VMware.VimAutomation.Sdk.psm1 cannot be loaded because its operation is blocked by software
restriction policies, such as those created by using Group Policy.
At line:1 char:1
+ import-module vmware.powercli
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [Import-Module], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand

Обычно это вызвано, скажем, исходными ограничениями модуля. Вот три возможные причины этой ошибки и способы ее устранения.

Политика выполнения PowerShell

PowerShell можно настроить для предотвращения запуска скриптов (например, модулей) или отдельных команд, когда они могут нанести вред вашей системе. Вот хорошее объяснение этой темы. Текущие настройки для всех областей можно показать, запустив:

Get-ExecutionPolicy -List

Чтобы установить другую политику, используйте:

Возможные варианты:

  • Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды.
  • AllSigned – разрешено выполнять только скрипты с цифровой подписью от доверенного издателя.
  • RemoteSigned – можно запускать локальные PowerShell скрипты без ограничения. Можно запускать удаленные PowerShell скрипты с цифровой подписью. Нельзя запускать PS1 файлы, скачанные из Интернета. В свойствах скачанного файла можно «Разблокировать» запуск скрипта.
  • Unrestricted – разрешен запуск любых PowerShell скриптов.
  • Bypass – разрешён запуск любых PowerShell скриптов. Эта политика обычно используется для автоматического запуска PS скриптов без вывода каких-либо уведомлений и не рекомендуется для постоянного использования.
  • Default – сброс настроек выполнения скриптов на стандартные.

Для изменения текущего значения политики запуска PowerShell скриптов используется командлет Set-ExecutionPolicy.

Set-ExecutionPolicy Unrestricted
Get-ExecutionPolicy
Bypass

Порой бывает что , политика запуска PowerShell скриптов изменилась, но… не изменилась. Такая ошибка появляется, если политики запуска PowerShell скриптов управляются групповыми политиками, например, если компьютер в домене.

В этом случае нам поможет реестр. В разделе

\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell

Но групповые политики могут перезаписать ваши настройки! Поэтому у вас не всегда есть возможность изменить эту политику.

Ещё можно запустить скрипт с явно указанной политикой:

powershell.exe -noprofile -executionpolicy bypass -file c:\ps\hello.ps1

Или так:

Get-Content c:\ps\hello.ps1 | PowerShell.exe -noprofile -executionpolicy bypass

Загруженный модуль из интернета

Когда вы пытаетесь импортировать неподписанный модуль, загруженный из Интернета, вы получаете сообщение об ошибке, когда для вашей политики выполнения установлено значение RemoteSigned. Это связано с тем, что загруженные файлы из Интернета помечены как таковые. Чтобы «снять пометку» с этих файлов, вы можете запустить:

Get-ChildItem -Path C:\Scripts\HealthChecker.ps1 -Recurse -File | Unblock-File

Просроченный сертификат

Недавно я не мог решить ошибку с решениями выше. Я выполнил некоторые действия по устранению неполадок и обнаружил, что сертификат модуля PowerCLI не был доверенным в моей системе.

Я узнал, что сертификат попал в Untrusted Certificates . Я не знаю, как это произошло, но это произошло.

После перемещения сертификата в доверенную папку — например, « Trusted Publishers» — модуль импорта снова заработал без проблем.

Статьи из этой категории

Leave a Comment