В настоящее время в каждую Windows предустановлен PowerShell.
PowerShell — это не только консоль предоставляющая доступ к утилитам командной строки, но и мощное средство администрирования и автоматизации. В PowerShell реализовано множество команд и функций, которые могут добавляться как модули устанавливаемым программным обеспечением.
PowerShell поддерживает как выполнение отдельных команд, так и пакетные файлы с набором команд, то есть скрипты. Эти скрипты можно назвать аналогами файлов .bat для оболочки CMD (которая, кстати, по-прежнему доступна в Windows).
Но при попытке запуска скрипта PowerShell вас, вероятно, ждёт неприятный сюрприз. К примеру, моя попытка выполнить файл PowerShell с расширением .ps1:
.\Invoke-SMBClient.ps1
Эта команда вызвала ошибку:
.\Invoke-SMBClient.ps1 : Невозможно загрузить файл C:\Users\MiAl\Downloads\Invoke-TheHash-ma ster\Invoke-SMBClient.ps1, так как выполнение сценариев отключено в этой системе. Для получе ния дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/f wlink/?LinkID=135170. строка:1 знак:1 + .\Invoke-SMBClient.ps1 + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : Ошибка безопасности: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
Ключевой является информация:
Невозможно загрузить файл ....ps1, так как выполнение сценариев отключено в этой системе
Причина ошибки в том, что в системе Windows по умолчанию запрещено запускать пакетные файлы, скрипты PowerShell.
Как разрешить в Windows выполнение скриптов PowerShell
Проблема заключается в том, что политика выполнения скриптов запрещает выполнять эти самые скрипты. Узнать текущее значение политики можно командой:
Get-ExecutionPolicy
Для своей системы я получил значение:
Restricted
Чтобы разрешить выполнение файлов с расширением .ps1, то есть чтобы запустить скрипт PowerShell в Windows, выполните команду:
Set-ExecutionPolicy unrestricted
Когда поступит запрос, введите Y.
Данные команды нужно выполнять в PowerShell, а не в CMD.
Как запретить в Windows выполнение скриптов PowerShell
Чтобы вновь включить запрет на выполнение пакетных файлов в PowerShell достаточно выполнить команду:
Set-ExecutionPolicy Restricted
Опасно ли разрешать выполнение файлов со скриптами PowerShell в Windows?
При выполнении команды по изменению политика запуска скриптов каждый раз показывается сообщение:
Изменение политики выполнения Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies и расположенном по адресу https:/go.microsoft.com/fwlink/?LinkID=135170 . Вы хотите изменить политику выполнения? [Y] Да - Y [A] Да для всех - A [N] Н
Предупреждение кажется довольно страшным, но в самой справке, на которую дана ссылка, написано, что данная политика запрета запуска скриптов не является мерой безопасности, поскольку пользователь по-прежнему может выполнить команды одну за другой. Более того, у хакеров есть возможность обойти этот запрет и запустить скрипт даже при отключённой политике.
Как сказано в документации, это мера для предотвращения случайного выполнения скриптов PowerShell и случайных изменений.
То есть в целом изменение этой настройки не уменьшает уровень безопасности системы. Но если вы редко запускаете скрипты PowerShell, то можете установить уровень Restricted, то есть запрет выполнения сценариев.
Ошибка «"Set-ExecutionPolicy" не является внутренней или внешней командой, исполняемой программой или пакетным файлом»
Если при выполнении
C:\Windows\system32>Set-ExecutionPolicy unrestricted
вы получили ошибку
"Set-ExecutionPolicy" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
то это означает, что вы запускаете указанную команду в CMD (командная строка Windows), а не в PowerShell. Чтобы ошибка исчезла, откройте PowerShell и выполните команду там.
Ошибки «Отказано в доступе к разделу реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds» и «Access to the path 'C:\Program Files\PowerShell\7-preview\powershell.config.json' is denied»
Во время выполнения команды
Set-ExecutionPolicy unrestricted
Вы можете столкнуться с ошибкой:
Set-ExecutionPolicy : Отказано в доступе к разделу реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell". Чтобы изменить политику выполнения для области (LocalMachine), используемой по умолчанию, запустите Windows PowerShell с параметром "Запуск от имени администратора". Чтобы изменить политику выполнения для текущего пользователя, выполните "Set-ExecutionPolicy -Scope CurrentUser". строка:1 знак:1 + Set-ExecutionPolicy unrestricted + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
В PowerShell 7.* ошибка выглядит так:
Set-ExecutionPolicy: Access to the path 'C:\Program Files\PowerShell\7-preview\powershell.config.json' is denied. To change the execution policy for the default (LocalMachine) scope, start PowerShell with the "Run as administrator" option. To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".
Причина ошибки в том, что указанную команду нужно выполнять с правами администратора.
Чтобы запустить PowerShell с правами администратора, нажмите «Win+x», либо правой кнопкой мыши по меню «Пуск».
И выберите «PowerShell (Администратор)» либо «Терминал Windows (Администратор)».
Смотрите также:
- Как установить PowerShell 7 в Windows 10
- Настройка рабочего окружения PowerShell в Windows и Linux
- Доступен новый Windows Terminal — он потрясающий
Связанные статьи:
- Не работает DNS через VPN в Windows 10 (РЕШЕНО) (94.3%)
- Windows 10: нет подключения к Интернету после подключения к VPN-серверу (РЕШЕНО) (94.3%)
- Ошибка ImageMagick в Windows: «magick: unable to open image ''test': No such file or directory @ error/blob.c/OpenBlob/3565. magick: no decode delegate for this image format `' @ error/constitute.c/ReadImage/741.» (РЕШЕНО) (94.3%)
- Проигрыватель Windows не показывает или плохо показывает видео (РЕШЕНО) (80.4%)
- Ошибка «Файл слишком большой для файловой системы получателя» (РЕШЕНО) (80.4%)
- Почему видеокарта не может раскрыть свой потенциал из-за центрального процессора (RANDOM - 50%)
Спасибо большое за материал. По какой-то причине у меня выдает "Set-ExecutionPolicy" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Видимо по той причине, что вместо того, чтобы запускать в PowerShell, вы запускаете в CMD (обычная командная строка). Подробности смотрите в статье Настройка рабочего окружения PowerShell в Windows и Linux в разделе «Отличия PowerShell и CMD в Windows».
Спасибо! Помогло
от души, братан, помог так помог! спасибо!
Рабочий способ. Благодарю)
Работает, спасибо.
Спасибо, помогло
Еб@ть-колотить, буду век тебя любить! Спасибо
СПАИСБО ОГРОМНОЕ! надеюсь найти данный сайт после переустановки винды 🙂
Спасибо. Для тебя отдельное место в раю обеспечено…
Спасибо помоголо
У меня еще поругалось после команды "unrestricted", вот так—->
Set-ExecutionPolicy unrestricted
Set-ExecutionPolicy : Отказано в доступе к разделу реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
\ShellIds\Microsoft.PowerShell". Чтобы изменить политику выполнения для области (LocalMachine), используемой п
о умолчанию, запустите Windows PowerShell с параметром "Запуск от имени администратора". Чтобы изменить полити
ку выполнения для текущего пользователя, выполните "Set-ExecutionPolicy -Scope CurrentUser".
строка:1 знак:1
+ Set-ExecutionPolicy unrestricted <—-
выполнил команду "Set-ExecutionPolicy -Scope CurrentUser" , нажал '1', >> пока заработало) Спасибище!
Set-ExecutionPolicy : Отказано в доступе к разделу реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds
\Microsoft.PowerShell". Чтобы изменить политику выполнения для области (LocalMachine), используемой по умолчанию, запус
тите Windows PowerShell с параметром "Запуск от имени администратора". Чтобы изменить политику выполнения для текущего
пользователя, выполните "Set-ExecutionPolicy -Scope CurrentUser".
строка:1 знак:1
+ Set-ExecutionPolicy unrestricted
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyComma
Здравствуйте! Я дополнил статью решением этой проблемы: https://zawindows.ru/решение-проблемы-невозможно-загруз/#access-is-denied