Для конвертация любого PowerShell скрипта в исполняемый EXE файл можно использовать утилиту ps2exe. Эта консольная утилита позволяет скомпилировать exe файл из вашего файла скрипта PS1.
Утилита ps2exe доступна для загрузки в галереи скриптов PowerShell по ссылке https://www.powershellgallery.com/packages/ps2exe/1.0.11.
Для онлайн установки утилиты ps2exe из PSGallery в Windows, можно воспользоваться PowerShell командой Install-Module:
Install-Module -Name ps2exe
Теперь вы можете использовать команду Invoke-ps2exe для конвертации ваших PowerShell скриптов в исполняемые файлы. Например:
cd c:\PS
Invoke-ps2exe .\psscript.ps1 -outputFile .\psscript.exe
Скрипт скомпилирует exe файл из указанного файла PS1.
По умолчанию программа компилируется как консольное приложение. Если вам нужно Windows приложение, добавьте ключ noConsole. Такое приложение будет выводить все сообщения из консоли PowerShell в графическое диалоговое окно.
Скомпилированный exe файл по умолчанию имеет несколько дополнительных параметров. Например, при запуске с параметром –wait скрипт будет ждать реакции пользователя для завершения процесса.
Полный список всех доступных опций утилиты ps2exe можно получить, выполнив:
get-help Invoke-ps2exe
или выполнив команду Invoke-ps2exe без параметров.
Есть графическая версия скрипта Win-PS2EXE. Здесь вы можете указать нужные параметры для компиляции в графическом интерфейсе.
Обратите внимание, что PowerShell скрипты, скомпилированные таким образом будут выполняться независимо от настроек PowerShell Execution Policy на компьютере.
PS2exe при компиляции скриптов оборачивает код вашего PowerShell скрипта в код C#. Полученный exe файл представляет собой сборку .Net, содержащую исходный скрипт в кодировке Base64. Для работы exe файла на компьютере должны быть установлены PowerShell и .Net Framework 2.0+.
Не храните пароли, ключи и другую чувствительную информацию в таких exe файлах. Любой пользователь может получить исходный код вашего PowerShell скрипта, выполнив:
.\your_app_file.exe -extract:"script_source.ps1"