Многим пользователям когда-либо приходилось вводить команды PowerShell, в том числе и взятые с этого сайта. Однако, Windows PowerShell — это не просто «консоль и команды», а серьезный скриптовый язык, позволяющий автоматизировать работу с ОС и создать очень многое, в том числе и GUI-приложения.
Одна из неочевидных возможностей — конвертация скрипта PowerShell .PS1 в полноценный исполняемый файл .EXE. О том, как это сделать с помощью PS2EXE и пойдёт речь далее в инструкции.
Установка и использование PS2EXE
Для того, чтобы легко и быстро выполнить преобразование .PS1 в .EXE можно использовать модуль PowerShell PS2EXE. Он не установлен в Windows 11/10 по умолчанию, но установка сравнительно простая:
- Запустите Windows PowerShell или Терминал Windows от имени Администратора. Сделать это можно в меню по правому клику на кнопке «Пуск».
- Выполните команду:
Install-Module -Name PS2EXE
При выполнении потребуется подтвердить установку из стороннего репозитория.
- По порядку выполните следующие две команды. Первая включит возможность запуска удаленно подписанных скриптов, вторая — импортирует ранее установленный модуль:
Set-ExecutionPolicy RemoteSigned Import-Module -Name PS2EXE
- Примечание: вы можете ограничить установку и изменение политик только для текущего пользователя, добавив параметр
-Scope CurrentUser
в конце первой и третьей команд.
Готово, модуль PS2EXE установлен и готов к использованию.
Для того, чтобы конвертировать скрипт PowerShell (.PS1) в EXE в самом простом варианте достаточно выполнить следующие действия:
- Скопируйте ваш скрипт Windows PowerShell и, если хотите — иконку с расширением .ICO в какую-либо папку.
- Запустите Windows PowerShell и по порядку выполните команды
cd путь_к_папке_из_1_шага Invoke-PS2EXE .\script.ps1 .\script.exe -iconFile .\icon.ico
Во второй команде script.ps1 измените на имя скрипта в папке, script.exe — на имя готового EXE файла, icon.ico — на имя иконки. Если иконка не устанавливается, не используйте параметр -iconFile
- Результат: в папке в дополнение к ранее размещенными вами файлам появится исполняемый EXE файл скрипта.
В своём тесте я экспериментировал с GUI-скриптом загрузки оригинальных ISO образов Windows, после конвертации работает исправно:
Дополнительная информация
Некоторые дополнительные нюансы, касающиеся использования PS2EXE, которые могут пригодиться:
- После конвертации переменная $PSScriptRoot (указание пути к папке, где лежит скрипт) работать не будет.
- Запустив команду Invoke-PS2EXE вы получите список дополнительных поддерживаемых параметров. Среди важных и часто востребованных: -noConsole (не отрисовывать консоль, полезно для GUI приложений и фоновых задач), параметры для задания заголовка, описания, версии продукта, -requireAdmin — для запроса прав Администратора при запуске, -x64 для компиляции в 64-битную архитектуру (важно, если требуется использовать ветки реестра и DLL в x64-версиях).

Как итог, если у вас есть идеи каких-то скриптов для автоматизации рутинных действий или иных задач, а также навыки их написания, вы можете легко превратить эти сценарии в обычные EXE файлы, добавлять в автозагрузку, превращать в службы Windows или использовать иным образом.
Если же есть лишь идеи, а навыки отсутствуют — современные нейросети помогут реализовать задуманное и могут подробно объяснить, как и почему это работает или, наоборот — нет.