Чтобы иметь возможность запускать в Windows 10 скрипты PS1, необходимо изменить политику выполнения в самом PowerShell. Это нетрудно, но если вы захотите выложить такой скрипт в сеть, надо будет приложить к нему мини-инструкцию, поясняющую пользователю, что нужно делать, чтобы скрипт выполнился. Но можно пойти и иным путем — сконвертировать PS1-скрипт в исполняемый EXE-файл, обойдя таким образом политику выполнения.
Другим немаловажным преимуществом конвертации скриптов PowerShell в EXE-файлы является возможность их скрытого запуска. Если скомпилировать PS1-файл с ключами noOutpup, noConsole и noError, окна консоли при его исполнении появляться не будут.
Для конвертирования PowerShell скриптов удобнее всего использовать тулзу PS2EXE-GUI, основанную на скрипте PS2EXE.
Последний поддерживает множество опций, просмотреть которые можно запустив скрипт в PowerShell без параметров, предварительно разрешив выполнение сценариев командой set-executionpolicy remotesigned.
Например, параметр inputFile используется в пути к конвертируемому файлу, а outputFile — в пути к созданному экзешнику.
Запустив консоль с правами администратора выполните команду следующего вида:
./ps2exe.ps1 -inputFile "полный путь к скрипту" PS1 -outputFile "полный путь к EXE-файлу"
В случае удачной конвертации вы получите сообщение «Config file for EXE created».
К сожалению, при конвертировании у нас возникла ошибка, указывающая на якобы неподдерживаемую версию PowerShell.
При использовании же PS2EXE-GUI всё прошло удачно.
Запустив утилиту, укажите в поле «Source file» путь к компилируемому скрипту, а в поле «Target file» — путь к будущему экзешнику. Дополнительно утилита предлагает добавить исполняемому файлу иконку, указать его версию и описание.
Также обратите внимание на доступные параметры. Отметив пункт «Compile a graphic windows program», вы включите использование созданным EXE-файлом графической оболочки. Если программа должна выполняться в фоне, отметьте пункты «Suppress output» и «Suppress error output», если при запуске программы нужно запросить права администратора, включите настройку «Require administrator rights at runtime».
О плюсах такого преобразования было сказано выше, теперь пару слов о минусах. Особых преимуществ, кроме обхода политики выполнения и скрытия вывода, конвертирование PS1 и EXE не дает, программы будут выполняться с той же скоростью, что и скрипты, а для их работы в системе должны присутствовать PowerShell и .NET Framework.
А еще запуск созданных таких образом программ может блокироваться придирчивыми антивирусами, использующими механизм репутации исполняемых файлов.
Страничка разработчика: gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5
Не устанавливается этот PS2EXE на Windows 7 x64. Есть ли другие преобразователи в EXE?