PowerShell весьма мощный язык сценариев для ОС Windows, поэтому на нем очень легко писать вредоносный код. Чтобы не допустить запуска «плохих» сценариев в Windows встроено несколько механизмов защиты.
Для тех ситуаций, когда необходимо все же скрипт запустить выполните эти действия:
- Запустите сеанс PowerShell. Возможно с правами администратора
- Чтобы временно отключить защиту наберите эту команду:
1 |
Set-ExecutionPolicy Unrestricted -Scope Process |
- Напишите имя скрипта и полный путь к нему. Используйте клавишу Tab, чтобы быстрее ввести путь. Например:
1 |
C:\Users\Administrator\test.ps1 |
Почему необходимо выполнить эти команды?
Во-первых, PowerShell никогда не ищет исполняемые файлы и скрипты в текущем каталоге. Поэтому запуск скрипта PowerShell необходимо производить указывая полный или относительный путь к файлу. Например, если файл расположен в каталоге C:\Users\Administrator\, то его можно выполнить следующим образом:
1 2 |
PS C:\Users\Administrator> .\test.ps1 PS C:\Users\powershell> C:\Users\Administrator\test.ps1 |
Во-вторых, к счастью, по умолчанию запуск всех скриптов запрещен (единственное пока исключение это Windows Server 2012 R2). Поэтому при попытке запуска скрипта PowerShell вы можете увидеть следующие сообщение: Невозможно загрузить файл C:\Users\Administrator\test.ps1, так как выполнение сценариев отключено в этой системе или оно же в английском варианте: File C:\Users\Administrator\test.ps1 cannot be loaded because running scripts is disabled on this system.
В большинстве случаев для разрешения запуска скрипта PowerShell необходимо выполнить с правами администратора данный код:
1 |
Set-ExecutionPolicy RemoteSigned |
Если вдруг вы обычный пользователь, тогда можно посоветовать данную команду:
1 |
Set-ExecutionPolicy RemoteSigned -Scope currentuser |
После выполнения данной команды большинство скриптов будут запускаться, однако если вы скачали их из интернета то может понадобится или скопировать текст скрипта в новый ps1 файл или же убрать галку в свойствах файла:
И так, чтобы запуск скрипта PowerShell был возможен необходимо один раз запустить Set-ExecutionPolicy RemoteSigned и затем выполнять сам файл указывая относительный или полный путь к файлу.