Главная > Powershell > Конвертирование файлов .ps1 в .exe

Конвертирование файлов .ps1 в .exe

Давно собирался написать эту заметку, всё руки не доходили, а тут посмотрев статистику блога увидел, что время от времени ко мне попадают люди по запросам “конвертирование powershell в exe”, “как сделать из ps1 exe” и т.д., и скорее всего найдя только небольшое упоминание о такой возможности в Primal Forms уходят ни с чем. И уходят судя по всему расстроенные, так как Primal Forms стоит денег :). А между прочим есть совершенно бесплатный инструмент для конвертирования файлов скриптов .ps1 в исполняемые exe-файлы, о котором сегодня и пойдёт речь.

Инструмент этот называется PS2EXE, скачать его можно с codeplex. На момент написания этой статьи доступна версия 0.2.0.0 (бета). Сразу хочется обратить внимание на то, что созданный таким образом exe-файл это не полноценный exe’шник, а всего лишь обёртка над скриптом, т.е. для того, чтобы этот файл работал на компьютере, на котором он будет запускаться должен быть установлен Powershell, .NET Framework, а также должна быть установлена политика, разрешающая выполнение скриптов.

Для тех, кто впервые слышит про “какие-то там политики” рекомендую выполнить команду

Get-Help about_Execution_Policies

и почитать.

Для демонстрации работы конвертора создадим простенький скрипт, который будет создавать в корне системного диска html-файл, содержащий службы компьютера, отсортированные по статусу:

$Path = $Env:SystemDrive + '\Services.htm'
Get-Service | Sort-Object status | Select-Object Name, DisplayName, Status |
    ConvertTo-Html -Title "Службы, отсортированне по статусу" |
    Out-File -FilePath $Path

Сохраним его под именем, например, Out-Service.ps1.

Переходим непосредственно к конвертированию.

Сам конвертор представляет собой скрипт на Powershell, содержащийся в файле ps2exe.ps1. Скрипт имеет несколько параметров, перечислять все думаю нет смысла – все они описаны там же на странице загрузки. Минимально необходимые параметры –inputFile и –outputFile задающие, соответственно, имя исходного .ps1-файла желаемое имя будущего exe’шника. Т.е. в простейшем случае команда для конвертирования будет выглядеть следующим образом:

.\ps2exe.ps1 -inputFile .\Out-Service.ps1 -outputFile .\Out-Service.exe

(Вообще-то –outputFile можно пропустить и после .ps1-файла просто указать имя exe’шника.)

В результате в указанном каталоге (в данном случае всё выполняется в текущем каталоге) будет создан файл Out-Service.exe, при запуске которого в корне системного диска будет создан файл Services.htm, в котором будут перечислены все службы компьютера, отсортированные по статусу.

Ещё раз отмечу, что работы сковертированные файлы, это “не настоящие” exe’шники: для того, чтобы они работали необходимо соблюдение трёх условий:

  • на компьютере должен быть установлен Powershell;
  • должен быть установлен .NET Framework (версии не ниже 2.0);
  • на компьютере должна быть установлена политика, разрешающая выполнение скриптов.
Реклама
Рубрики:Powershell Метки:

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: