Как сконвертировать PowerShell в EXE

Как сконвертировать PowerShell в EXE

@bladerunner0x2049

Сконвертировать скрипт PowerShell в исполняемый exe-файл можно с помощью PS2EXE-GUI. Этот конвертер основан на скрипте PS2EXE, к которому добавлена графическая оболочка.



У скрипта имеется большое количество дополнительных опций, поэтому начать лучше со справки. Для ее вывода надо запустить скрипт ps2exe.ps1 без параметров.

В самом простом варианте конвертации запускаем ps2exe.ps1 и указываем ему в качестве параметров входной и выходной файлы. Для примера возьмем простой скрипт, выводящий сообщение на экран, сконвертируем его и проверим результат:

.\ps2exe.ps1 -inputFile script.ps1 -outputFile script.exe

По умолчанию выходной файл создается как консольное приложение. Если указать ключ noConsole, то файл скомпилируется как Windows приложение:

.\ps2exe.ps1 -inputFile script.ps1 -outputFile script.exe -noConsole

Сгенерированный exe-файл поддерживает несколько дополнительных параметров. К примеру, запущенный с параметром -wait он после выполнения не завершится, а будет ожидать реакции пользователя.

Те, кто не любит работать в консоли, могут воспользоваться графической оболочкой. Принцип здесь тот же, указываем входной и выходной файл, и отмечаем дополнительные опции. Кстати, в отличии от оригинального PS2EXE в GUI есть пара новых параметров.

Обратите внимание, что при конвертации не происходит преобразования скрипта в другой язык программирования, просто скрипт заворачивается в код С#. Полученный в результате конвертации exe-файл представляет из себя сборку .Net, содержащую исходный скрипт в кодировке Base64.

Поэтому созданный exe-файл не является самостоятельным, для работы ему требуется PowerShell и .NET версии 2.0 и выше. Также конвертация не увеличит скорость работы скрипта и не даст ему каких то дополнительных преимуществ. Тогда зачем вообще нужно конвертировать PowerShell в exe?

Плюсы все-же есть. К примеру, сконвертированный скрипт отрабатывает даже при запрете на выполнение PowerShell скриптов. Это поможет обойти политику выполнения.

Еще одно преимущество, это возможность скрытого запуска. Скомпилированный с параметрами noOutpup, noError и noConsole скрипт выполняется полностью незаметно для пользователя. Добиться подобного эффекта другими способами мне не удалось. Это важно для всяческих Logon скриптов.

Ну и наконец, конвертацию можно использовать в качестве альтернативы обфускации. К примеру, если вы передаете свои скрипты сторонним лицам и не хотите, чтобы они могли посмотреть исходный код. Однако тут есть один тонкий момент. Сконвертированный скрипт можно легко расконвертировать, выполнив его с ключом Extract, например:

script.exe -extract:″script.ps1″

Поэтому хранить в скриптах какие то важные вещи (напр. пароли) все же не стоит.





Report Page