Почему же возникает эта ошибка и как можно разрешить выполнение таких скриптов без цифровой подписи? В этой статье я расскажу о причинах данной проблемы и покажу два способа её решения: через свойства файла и с помощью PowerShell.
Ошибка отсутствия цифровой подписи
Запустите PowerShell с правами администратора и выполните ранее загруженный скрипт.
C:\Scripts\.\Script.ps1
В результате выполнения команды появляется следующая ошибка:
.\Script.ps1 : File C:\Scripts\Script.ps1 cannot be loaded. The file C:\Scripts\Script.ps1 is not digitally signed. You
cannot run this script on the current system. For more information about running scripts and setting execution policy,
see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Script.ps1
+ ~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
В нашем случае проблема возникает со скриптом, который был загружен из интернета. Windows помечает такие файлы как полученные с другого компьютера, из-за чего PowerShell может ограничить их выполнение.
Как исправить ошибку отсутствия цифровой подписи
Сначала откройте папку со скриптом PowerShell. Найдите нужный файл, щёлкните по нему правой кнопкой мыши и выберите Свойства.
На вкладке Общие в нижней части окна вы увидите раздел Безопасность. Здесь будет указано, что файл был получен с другого компьютера и, возможно, заблокирован с целью защиты компьютера.
Если вы доверяете источнику, из которого был загружен скрипт, установите флажок Разблокировать и нажмите ОК.
Теперь повторно запустите PowerShell-скрипт. Он должен выполниться без сообщения об ошибке, связанного с блокировкой загруженного файла.
Исправление ошибки отсутствия цифровой подписи с помощью PowerShell
Если вы предпочитаете разблокировать файл через PowerShell, используйте командлет Unblock-File.
Например, следующая команда разблокирует файл Script.ps1, а затем запустит его:
Unblock-File C:\Scripts\Script.ps1 ; C:\Scripts\.\Script.ps1
Если в папке или её вложенных каталогах находится много скриптов, их можно разблокировать все сразу. Для этого выполните следующую команду:
Get-ChildItem -Path "C:\Scripts\" -Recurse | Unblock-File
Эта команда рекурсивно обработает файлы в указанной папке и её вложенных каталогах, передавая их командлету Unblock-File.
Часто задаваемые вопросы
Почему скачанный PowerShell-скрипт не запускается?
Windows может пометить файл, загруженный из интернета или полученный с другого компьютера, как потенциально небезопасный. В зависимости от настроенной политики выполнения PowerShell это может препятствовать запуску скрипта.
Почему другие PowerShell-скрипты запускаются без ошибки?
Проблема может возникать именно со скачанным файлом, который Windows пометила как полученный из внешнего источника. Локально созданные скрипты такой отметки обычно не имеют.
Как разблокировать PowerShell-скрипт через Проводник?
Щёлкните по файлу правой кнопкой мыши, выберите Свойства, на вкладке Общие установите флажок Разблокировать и нажмите ОК.
Как разблокировать PowerShell-скрипт командой?
Используйте командлет Unblock-File. Например: Unblock-File C:\Scripts\Script.ps1.
Можно ли разблокировать сразу несколько файлов?
Да. Например, команда Get-ChildItem -Path "C:\Scripts\" -Recurse | Unblock-File позволяет обработать файлы в указанном каталоге и его вложенных папках.
Нужно ли менять Execution Policy для решения этой проблемы?
В рассматриваемом сценарии политика выполнения PowerShell не изменяется. Мы снимаем блокировку непосредственно с загруженного файла с помощью его свойств или командлета Unblock-File.
Безопасно ли использовать Unblock-File?
Командлет сам по себе не делает файл безопасным. Он лишь снимает блокировку Windows, поэтому перед его использованием необходимо убедиться, что вы доверяете источнику и содержимому скрипта.
Заключение
Теперь вы знаете, как устранить ошибку, связанную с отсутствием цифровой подписи при выполнении загруженного PowerShell-скрипта. Если вы доверяете файлу, его можно разблокировать через свойства в Проводнике или с помощью командлета Unblock-File, после чего повторно запустить скрипт.
Вам понравилась эта статья? Тогда вам, скорее всего, будет интересна другая полезная статья Как исправить ошибку «Компьютер является членом группы доступности базы данных (DAG)».