Руководство по преобразованию PS1 в EXE (7 способов)

Вы можете вызывать сценарии PowerShell различными способами, но у них всех есть один недостаток: вы не можете просто запустить их как стандартную программу Windows (EXE). Возможно, вам хотелось бы предотвратить редактирование кода в сценарии или, возможно, сделать его запуск более удобным для ваших пользователей. Пришло время узнать, как преобразовать PS1 в EXE.

В этом руководстве вы узнаете, как использовать генераторы PS1 в EXE, а также сможете сравнить их, чтобы решить, какой лучше всего соответствует вашим предпочтениям.

Требования

В этом учебнике демонстрируются различные инструменты с пошаговыми инструкциями о том, как преобразовать PS1 в EXE. Убедитесь, что у вас есть все необходимые компоненты, чтобы следовать за учебником.

  • A Windows computer with an administrator privileges
  • Начиная с Windows 7, 8.1 и 10, PowerShell уже включен при установке операционной системы. Хотя некоторые сценарии могут быть запущены с PowerShell 3.0, гораздо лучше установить PowerShell 5.1 или PowerShell 7
  • Ваша политика выполнения PowerShell установлена на разрешение выполнения сценариев

PS2EXE

Утилита PS2EXE – первый инструмент в нашем списке. PS2EXE – это бесплатный, открытый исходный код модуль PowerShell, который, по словам автора Инго Карштейна, “не преобразует сценарий PowerShell в другой язык. Он инкапсулирует сценарий с легковесным хостом PowerShell, написанным на C#, и компилирует динамически созданный исходный код на C# в памяти в файл EXE.”

Посетите блог Инго Карштейна, чтобы узнать больше о том, как начался PS2EXE. Развитие модуля остановилось примерно в 2017 году, но Маркус Шольтес взял на себя развитие PS2EXE, создав также графический интерфейс пользователя.

Установка модуля PS2EXE

PS2EXE начался как сценарий PowerShell, и когда Маркус Шольтес взялся за разработку, был создан модуль. Поскольку PS2EXE использует модуль для преобразования вашего сценария в исполняемый файл, вам нужно установить его из PowerShell Gallery.

Следуйте инструкциям ниже, чтобы установить модуль PS2EXE.

  1. Откройте консоль PowerShell от имени администратора.

2. Запустите команду Install-Module, чтобы скачать и установить модуль из галереи PowerShell.

Install-Module ps2exe

3. Введите Y и нажмите Enter, когда увидите приглашение о ненадежном репозитории. Не волнуйтесь. Это сообщение безопасно.

Untrusted repository
 You are installing the modules from an untrusted repository. If you trust this repository, change
 its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to
 install the modules from 'PSGallery'?
 [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

Преобразование PS1 в EXE через командную строку

PS2EXE предоставляет два способа преобразования сценариев PowerShell в EXE: через командную строку и графический интерфейс. Давайте сначала рассмотрим использование командной строки.

Для преобразования одного сценария PowerShell в EXE через командную строку необходима всего одна строка, в которой указывается основная команда PS2EXE (Invoke-PS2EXE), за которой следует путь к сценарию для преобразования и путь к EXE, который вы хотели бы создать.

## Используйте полное имя команды
Invoke-ps2exe .\source.ps1 .\target.exe

## Используйте псевдоним
ps2exe .\source.ps1 .\target.exe

Теперь вы можете запустить target.exe, и он вызовет код, определенный в сценарии source.ps1. Если вы не использовали параметр NoConsole при преобразовании своего сценария, при запуске файла target.exe будет отображена консоль PowerShell.

Скрытие консоли

В предыдущем примере при запуске target.exe появится типичная консоль PowerShell. В большинстве случаев это не желательно. Чтобы предотвратить это, вы можете использовать параметр NoConsole при создании EXE, как показано ниже.

Invoke-ps2exe "D:\Test\Get-LatestAppLog.ps1" "D:\Test\Get-LatestAppLog.exe" -noConsole
Converting PS1 to EXE with PS2EXE Command-Line

Вы также можете выбрать компиляцию EXE только для x86 или x64, а также другие варианты. Вы можете найти список доступных параметров на странице релизов GitHub.

Преобразование PS1 в EXE с помощью инструмента PS2EXE-GUI

Если вы не являетесь поклонником командной строки, вы также можете использовать графический интерфейс пользователя с модулем PS2EXE. Созданная немного позже, версия с графическим интерфейсом предоставляет практически все те же функции, что и версия для командной строки.

Для преобразования PS1 в EXE с версией PS2EXE с графическим интерфейсом достаточно всего лишь нескольких кликов. И, в отличие от командной строки, вы можете просматривать и выбирать исходный файл (PS1) из удобного диалогового окна обозревателя файлов.

Для запуска версии с графическим интерфейсом вам потребуется .NET 4.x на вашем компьютере. Если у вас только .NET 3.5x, вы можете загрузить версию PS2EXE-GUI для .NET 3.5x отдельно.

Предполагая, что вы уже установили модуль PowerShell PS2EXE, откройте Проводник и перейдите в одну из папок с модулем PS2EXE ниже, открыв папку, представляющую версию модуля.

Windows 32bit: C:\Program Files (x86)\WindowsPowerShell\Modules\ps2exe\<version>

Windows 64bit: C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>

Внутри этих папок вы найдете файл с именем Win-PS2EXE.exe.

  1. Откройте утилиту C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>\Win-PS2EXE.exe.

2. Нажмите на многоточие сразу справа от поля Исходный файл, чтобы найти скрипт PS1, который вы хотите преобразовать.

3. Определите значение для поля Целевой файл и убедитесь, что включено расширение файла .exe.

4. Выберите любые настройки для конвертации, которые вы хотите ниже. Это просто графическое представление параметров, которые вы можете использовать для вашего сценария, так же, как в командной строке параметры.

5. Нажмите Компилировать, чтобы начать процесс конвертации.

Converting PS1 to EXE with PS2EXE GUI

6. При нажатии кнопки Компилировать PS2EXE откроет сеанс PowerShell и выполнит конвертацию. После завершения нажмите Enter или закройте окно консоли.

Successfully Converted PS1 to EXE

Информация: некоторые исполняемые файлы, скомпилированные с помощью PS2EXE, могут быть обнаружены вашим антивирусным программным обеспечением как вирус. Если это произойдет, обязательно сообщите об этих ложных срабатываниях своему антивирусному поставщику.

PS1 to EXE

PS1 to EXE – еще одно бесплатное настольное приложение, разработанное F2KO Software, которое позволяет конвертировать PS1 в файл EXE. Ps1 to Exe, в отличие от PS2EXE, является инструментом с графическим интерфейсом пользователя, включая простой редактор сценариев.

Как и PS2EXE, Ps1 to Exe также имеет как GUI, так и версию для командной строки. Однако вместо консоли PowerShell Ps1 to Exe требует выполнения команд в командной строке.

К сожалению, несмотря на то, что веб-сайт F2KO по-прежнему работает, кажется, нет способа загрузить PS1 to EXE оттуда. К счастью, установочный файл этого инструмента можно скачать из интернета.

Давайте рассмотрим, как запустить и использовать PS1 to EXE для создания EXE из сценария PowerShell.

Преобразование PS1 в EXE с использованием графического интерфейса пользователя

После установки и запуска Ps1 в Exe, вы заметите, что PS1 в EXE имеет простой редактор скриптов. В этом редакторе скриптов вы можете создавать и сохранять скрипты и нажимать кнопку для их конвертации.

Ps1 в Exe поддерживает dot-sourcing; обратите внимание, как был вызван другой файл PS1 с помощью командной строки ниже.

## Вызов AppLogsComplete.ps1
try { .\AppLogsComplete.ps1 } catch { exit }

Чтобы конвертировать скрипт в EXE с PS1 в EXE:

  1. Откройте инструмент PS1 в EXE с вашего рабочего стола.

2. Нажмите на Файл —> Открыть, найдите скрипт, который вы хотите конвертировать, и откройте его.

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

Configuring The EXE Output Settings

3. Чтобы добавить зависимые скрипты, нажмите на вкладку Встроить, затем нажмите Добавить.

4. Когда вы удовлетворены опциями конвертации, нажмите на кнопку Конвертировать на верхней панели инструментов для конвертации скрипта в EXE.

Adding Dependent Scripts And Converting Script to EXE

Конвертация PS1 в EXE с использованием командной строки

Если вы предпочитаете придерживаться командной строки, CLI PS1 в EXE называется ps1_to_exe.exe, но использовать его немного сложно.

С открытым PS1 в EXE:

  1. Откройте Командную строку от имени администратора

2. Измените рабочий каталог на папку установки PS1 в EXE.

x86
 cd 'C:\Program Files (x86)\Ps1 to Exe'
 x64
 cd 'C:\Program Files\Ps1 to Exe'

3. Теперь запустите ps1_to_exe для конвертации PS1 в исполняемый файл.

Ниже приведена команда, которая также включает зависимый скрипт в скомпилированный файл EXE и устанавливает целевую платформу исполняемых файлов в 64-разрядную ОС Windows.

ps1_to_exe /ps1 "D:\Test\Get-LatestAppLog4.ps1" /exe "D:\Test\Get-LatestAppLogs.exe" /include "D:\Test\AppLogsComplete.ps1" /invisible /x64

Ниже приведена демонстрация фактического процесса преобразования и подробности вывода.

Converting Script to Executable Using Ps1 to Exe Command-Line Version

IExpress 2.0

Если вы предпочитаете не загружать еще один инструмент, вам повезло, потому что у вас есть старая школьная утилита IExpress. IExpress – это встроенное приложение Windows, которое обычно используется для упаковки файлов или создания установщиков программного обеспечения.

И вот сюрприз: IExpress также может конвертировать PS1 в EXE, компилируя файлы зависимостей в один исполняемый файл!

Чтобы преобразовать простой сценарий PowerShell в EXE:

  1. Вам нужно открыть IExpress от имени администратора. Нажмите клавиши *Windows*+R* для открытия диалогового окна Выполнить, введите iexpress, а затем нажмите клавиши Ctrl+Shift+Enter.
Running IExpress As Administrator

2. На приветственной странице IExpress выберите Создать новый файл директивы самораспаковки и нажмите Далее, чтобы настроить свой пакет. Файл Директива самораспаковки (SED) управляет опциями, используемыми при создании установочного пакета; можно представить его как файл конфигурации.

Create New Self Extraction Directive File

3. Выберите опцию Извлечение файлов и запуск команды установки и нажмите Далее. Если вы создаете установщик программного обеспечения, эта опция извлекает файлы, которые вы хотите включить в пакет. Эта опция также позволяет написать пользовательскую команду для выполнения скрипта при запуске исполняемого файла.

Selecting An Action To Take When Running The EXE

4. Теперь укажите Название пакета и нажмите Далее. Название пакета будет отображаться во всех окнах, которые пользователь увидит во время установки.

Название пакета применимо только при создании установщика программного обеспечения. В данном случае название не имеет значения.

Setting A Title For The Package

6. Далее выберите Без запроса. Выбор Без запроса не вызывает лишних диалоговых окон при запуске файла EXE.

No Prompt

6. Если вы создаете пакет для проекта, требующего соглашение конечного пользователя (EULA), вы можете добавить лицензию, которая будет отображаться при запуске файла EXE. Однако для этой демонстрации выберите опцию Не отображать лицензию и нажмите Далее.

Adding an End User License Agreement

7. Теперь нажмите на Добавить и выберите все скрипты, которые вы хотите включить в этот файл EXE. Обязательно включите основной скрипт, который вы собираетесь вызвать, а также все зависимые скрипты и другие файлы, на которые ссылаются скрипты.

Selecting Files To Include In The Package

8. В окне Программа для запуска установки укажите путь к движку powershell.exe, используя параметр File. Также убедитесь, что параметр ExecutionPolicy установлен на Bypass, чтобы убедиться, что заранее настроенные политики выполнения не препятствуют выполнению скрипта.

powershell.exe -ExecutionPolicy Bypass -File Get-LatestAppLog.ps1
Writing Custom Command

9. Далее вы можете определить, как должны вести себя окна EXE при выполнении. Если EXE должен работать в фоновом режиме, выберите Скрыто и нажмите Далее. Скрыто – самое распространенное поведение окна.

Selecting EXE’s Window Behavior On Execution

10. Поскольку вы просто запускаете EXE в фоновом режиме, нет необходимости включать Сообщение о завершении. Выберите Без сообщения и нажмите Далее.

Setting Up Post Installation Message

11. Теперь выберите путь к EXE, который вы хотите создать. Здесь также можно включить несколько различных опций. По завершении нажмите Далее.

  • Скрыть анимацию процесса извлечения файла от пользователя – Если ваш EXE запускается в фоновом режиме, оставьте эту опцию отключенной.
  • Хранить файлы с длинным именем внутри пакета – Для поддержки длинных имен файлов в процессе извлечения при запуске EXE. Опцию следует оставить отключенной, если вы собираетесь запустить пакет на Win 95 и будете использовать файл INF во время установки.
Setting Up Target Path And File Name

12. Если вы хотите, чтобы EXE вызывал перезагрузку после завершения скрипта, здесь вы можете выбрать Всегда перезагружать. После выбора опции нажмите Далее.

Choosing Whether To Require A Restart Or Not

13. Теперь выберите Сохранить файл директивы самораспаковки (SED) и нажмите Далее. Сохранение файла SED позволяет вам изменять любые параметры, указанные в этом мастере, в будущем. Файл SED содержит ответы на все предоставленные значения до сих пор.

Saving Information About The Package Configuration

14. Теперь все, что осталось, это скомпилировать пакет. Нажмите Далее, и вы увидите журнал процесса. Для завершения создания пакета нажмите Завершить, и вы готовы.

Требование привилегий администратора

Если у вас есть скрипт, который требует выполнения с правами администратора, IExpress не предоставляет вам такой опции, но это все равно возможно.

Перед запуском IExpress скопируйте приведенный ниже код и вставьте его в начало вашего скрипта. Этот код проверяет, запущен ли скрипт с правами администратора. В противном случае он закроется и перезапустит скрипт с автоматическими привилегиями администратора.

Помните, что вам нужно изменить параметр WindowStyle **на экране Показать окно в зависимости от того, как вы хотите показать или скрыть окно EXE при его запуске.

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
## Проверка, работает ли скрипт от имени администратора, если нет, запустите его снова с правами администратора
if ((Test-Admin) -eq $false){ 
    if ($elevated) {
    } else {
        try{
            Start-Process powershell.exe -WindowStyle Hidden -Verb RunAs -ArgumentList ('-noprofile -file "{0}" -elevated' -f ($MyInvocation.MyCommand.Definition))
            ## Стили окна: Обычный, Свернутый, Развернутый и Скрытый

						## ------> ВАШ СКРИПТ ЗДЕСЬ <------ ##

        }
        catch{
            exit
        }
    }
    exit
}

ISE Steroids

Если вы любите писать скрипты в PowerShell ISE, этот инструмент соответствует вашему стилю. ISE Steroids – это расширение редактора PowerShell ISE, упакованное как модуль PowerShell, добавляющее множество функций ISE.

ISE Steroids имеет много функций, но той, ради которой вы здесь, является его способность конвертировать сценарий в файл EXE, поэтому давайте разберемся.

  1. Предполагая, что ISE Steroids уже установлен, откройте PowerShell ISE.

2. В интегрированной консоли выполните Start-Steroids, чтобы запустить расширение и загрузить Steroids.

3. Откройте или создайте новый сценарий в окне редактора. В этом учебнике будут использоваться эти файлы.

4. Нажмите на Tools —> Turn Code into EXE так, как показано на скриншоте ниже.

Compiling PS1 to EXE

5. Теперь определите все параметры, которые вы хотите применить к полученному EXE в небольшом окне, подобном приведенному ниже. Эти параметры – те же, что и у PS2EXE, для настройки свойств и поведения вашего файла EXE.

Configuration For The Executable File

6. Как только вы установите все параметры, нажмите кнопку Create Application. Затем ISE Steroids попросит вас выбрать целевой путь. После этого конвертация вашего PS1 в EXE завершена.

Visual Studio Code и PowerShell Pro Tools

Для нашего следующего редактора мы предлагаем вам Visual Studio (VS) Code. VS Code – это рекомендуемая замена PowerShell ISE от Microsoft и получила признание многих разработчиков PowerShell.

Хотя у VS Code нет собственного способа преобразования сценариев PowerShell в файлы EXE, вы все равно можете сделать это с помощью расширения PowerShell Pro Tools. Помимо преобразования сценариев в EXE, расширение PowerShell Pro Tools помогает упаковывать сценарии, включает конструктор графического интерфейса и многое другое.

Для работы PowerShell Pro Tools требуются как пакет разработчика .NET 4.6.2 (или более поздней версии), так и .NET Core 1.0 или более поздней версии для упаковки сценариев.

Вы используете Get-LatestAppLog3.ps1 и AppLogsComplete.ps1 для этой демонстрации.

Предполагая, что у вас установлены VS Code и расширение PowerShell Pro Tools:

  1. Откройте VS Code и сценарий PowerShell для преобразования в EXE.

2. В правом верхнем углу VS Code нажмите кнопку Упаковать сценарий как Exe, как показано ниже.

Compiling PowerShell Script To An EXE

3. При создании EXE-файла из скрипта впервые PowerShell Pro Tools создаст файл package.psd1 в корневом каталоге текущего рабочего пространства.

Showing Workspace Root and PowerShell Data File (PSD1)

4. Внутри файла package.psd1 путь к скрипту для преобразования автоматически заполняется для ключа Root. Определите ключ Путь вывода, чтобы указать путь для сохранения EXE, как показано ниже.

Setting up Root and Output Path

5. При создании EXE из скрипта вы заметите различные сообщения журнала в выходной панели внизу экрана. Если при компиляции скрипта возникнут ошибки, они будут отображены здесь.

Logs Shown In The Output Pane

Компиляция других скриптов в том же EXE

Если у вас есть зависимые скрипты, вызываемые в вашем основном скрипте, расширение PowerShell Pro Tools может также заботиться о них. Для этого PowerShell Pro Tools требуется добавить в исходный код любые скрипты, которые вы хотите включить в EXE.

Скрипт Get-LatestAppLog3.ps1 ниже является основным скриптом для компиляции. Внутри него выполняется скрипт AppLogsComplete.ps1. Чтобы убедиться, что PowerShell Pro Tools включает зависимый файл AppLogsComplete.ps1, вы должны добавить в исходный код скрипт или включить его в область действия текущего скрипта.

. "$PSScriptRoot\AppLogsComplete.ps1"
Using Dot-Sourcing To Call Another PS1 Inside The Main Script

Как только вы подключили все зависимые скрипты, снова нажмите на пункт меню Package Script as Exe, чтобы начать преобразование ваших скриптов в исполняемый файл.

PowerGUI

PowerGUI был одним из первых редакторов сценариев PowerShell. Хотя кажется, что его уже давно забыли, вы все еще можете найти копии в сети. Почему говорить о давно забытом редакторе сценариев PowerShell? Потому что у него есть встроенный конвертер PS1 в EXE!

Хотя сайт PowerGUI больше не существует, вы все равно можете найти копию на таких сайтах, как Softpedia.

Компиляция сценария PS1 в EXE

После установки PowerGUI запустите его, и вы увидите стартовую страницу. Чтобы начать компиляцию ваших сценариев, вы можете либо создать новый сценарий, либо открыть существующий из панели инструментов, как показано на скриншоте ниже.

Create a New Script or Open an Existing One

Как только вы будете удовлетворены своим сценарием, нажмите на пункт меню Tools. Затем выберите Compile Script или нажмите Ctrl+F9 на клавиатуре.

Initiate Compiling Script to EXE

Теперь настройте, как вы хотели бы, чтобы EXE выполнялся после преобразования. Окно Compile Script, как показано ниже, содержит различные параметры, которые вы можете выбрать для поведения EXE.

  1. Нажмите на кнопку Browse и найдите свой PS1, который вы хотите преобразовать.

2. PowerGUI поддерживает целевую версию .NET Framework от Microsoft .NET Framework 3.5 до .NET Framework 4.0.

3. Если вы хотите, чтобы EXE работал в фоновом режиме, отключите опцию Показывать окно консоли PowerShell при выполнении скрипта.

4. Вы также можете нажать кнопку Зависимости (внизу слева), если у вас есть другие файлы для включения. Обычно это другие сценарии PowerShell, от которых зависит ваш сценарий.

5. Как только вы будете довольны настройками, нажмите OK, чтобы начать преобразование вашего PS1 в EXE.

Configuring Compiled EXE Behavior

Кроме того, вы заметите недостаток в PowerGUI в том, как вы хотите, чтобы EXE работал. PowerGUI не предоставляет много параметров, таких как добавление параметров.

PowerGUI также не предоставляет вам возможность встраивать информацию, такую как авторское право, версия и описание, в отличие от других генераторов PS1 в EXE. Но если вас это не слишком беспокоит, то PowerGUI – это хороший выбор, который вы можете сохранить.

PowerShell Studio

Чтобы завершить наш список конвертеров PS1 в EXE, давайте закончим одним из самых функциональных сред разработки PowerShell, PowerShell Studio компании Sapien Technologies. Созданный с нуля исключительно как среда разработки PowerShell, было бы несправедливо по отношению к PowerShell Studio продемонстрировать только его способность преобразовывать PS1 в EXE. Тем не менее, у нас есть ограниченное количество места!

Как и PowerShell Pro Tools в Visual Studio Code, PowerShell Studio также имеет строгие требования к упаковке сценариев; такие как .NET Framework 4.8, .NET 5 для PowerShell 7 и Visual Studio 2015-2019 Runtime

Предполагая, что у вас установлен PowerShell Studio, откройте PowerShell Studio и создайте или откройте существующий сценарий PowerShell. В этом руководстве будет использоваться сценарий Get-LatestAppLog3.ps1.

Навигация по настройкам

Прежде чем преобразовать сценарий в PowerShell Studio, вы должны изучить множество способов изменения поведения результирующего EXE.

Нажмите кнопку Package в правом верхнем углу окна и выберите Settings. Это открывает окно Script Packager, где вы можете определить все доступные вам параметры.

Packaging Script To An Executable File

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

Скриптовый движок

Раздел “Скриптовый движок” сосредотачивается на целевой платформе и скриптовом движке для компиляции вашего исполняемого файла.

Начните с выбора вашей Цели. Вы можете выбрать версию Windows 32 или 64 бита, или можете выбрать обе для гибкости. PowerShell Studio создаст файл EXE для каждой выбранной здесь платформы.

Setting up Target Platform And PowerShell Scrip Engine

Настройки вывода

В этом разделе можно настроить результат компиляции файла EXE.

  • Файл вывода – Название полученного файла EXE.

Не включайте расширение файла (.exe), так как оно будет автоматически установлено для вас в этом поле.

  • Папка вывода – Где будет сохранен исполняемый файл PowerShell Studio.
  • Разрешить и включить внешние сценарии – Убедитесь, что эта опция отмечена, если у вас есть зависимые сценарии в вашем основном сценарии. Если вы этого не сделаете, внешние сценарии будут проигнорированы при компиляции вашего исполняемого файла.

Всегда убедитесь, что все зависимые сценарии находятся в той же папке, что и основной сценарий.

  • Подпись – Место, где вы можете найти сертификат для подписи EXE вместе с паролем к сертификату (если он есть).
Managing The Output Settings For The Executable File

Файлы значков

Значок помогает различать приложения друг от друга, и раздел Файлы значков предоставляет вам эту опцию добавить значок для вашего исполняемого файла.

Чтобы добавить файл значка, нажмите кнопку Добавить файл или просто перетащите файл значка в раздел Файлы значков.

Add Icon Files

Ограничения

В разделе Ограничения вы можете включить или исключить критерии для разрешения выполнения файлов с расширением EXE.

Выбор операционной системы в данном поле гарантирует, что получившийся файл EXE будет выполняться только на этой операционной системе. Также вы можете определить критерии, такие как необходимость входа под определенным пользователем, наличие определенного MAC-адреса компьютера и многое другое.

Как видно ниже, у вас есть полный контроль над временем выполнения получившегося файла EXE.

Adding Security Via Execution Restrictions

Информация о версии

При создании файла EXE в PowerShell Studio у этого файла есть различные атрибуты. В разделе Информация о версии вы можете определить, какими будут эти атрибуты.

Здесь вы можете установить атрибуты, такие как номер версии файла, номер версии продукта, авторское право и так далее. Вы можете увидеть все доступные атрибуты ниже.

Setting File Version Information

Параметры сборки

Наконец, вы найдете раздел Параметры сборки. В этом разделе вы можете добавлять пользовательские команды до или после сборки для выполнения. Эта опция позволяет выполнять команды PowerShell перед или после компиляции скрипта в исполняемый файл.

Допустим, вы хотите выполнить какой-то код сразу после завершения создания EXE в PowerShell Studio. Для этого щелкните кнопку Новый (Вставить) в поле Команды после сборки. Оба типа команд, как до сборки, так и после, принимают команды PowerShell напрямую.

Кроме того, вы можете щелкнуть по кнопке Добавить файл (многоточие) и выбрать другое приложение или сценарий PowerShell для выполнения.

Adding Pre-Build or Post-Build Custom Commands To Execute

После настройки всего, нажмите ОК, чтобы упаковать скрипт в исполняемый файл. Местоположение файла автоматически откроется для вас, чтобы вы могли проверить исполняемый файл.

Учет внешних зависимостей скриптов PowerShell

A PowerShell script sometimes isn’t a self-contained unit. A script can also call other scripts. When converting to an EXE, some of the tools discussed here do not automatically find these dependent scripts and compile them.

Когда скрипт содержит ссылку на другой скрипт, а этот скрипт преобразуется в EXE, путь может измениться. Когда это происходит, код PowerShell внутри EXE не может найти зависимый скрипт, и он завершается с ошибкой.

Возможно, у вас есть скрипт, который вы хотели бы преобразить, вызывающий другие скрипты в той же папке. Когда вы запускаете скрипт через консоль PowerShell, он может найти эти скрипты, так как они находятся в одной рабочей директории. При преобразовании скрипта в EXE это может сломаться.

Если вы собираетесь преобразовать PS1 в EXE и этот скрипт вызывает другие скрипты в том же каталоге, добавьте следующий фрагмент кода в начало вашего скрипта.

Этот фрагмент кода ниже разрешает путь внешнего скрипта, который вы запускаете из основного скрипта, при условии, что они находятся в одном каталоге.

if ($MyInvocation.MyCommand.CommandType -eq "ExternalScript")
 { $ScriptPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition }
 else
 { $ScriptPath = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0]) 
     if (!$ScriptPath){ $ScriptPath = "." } }

Сравнение функций

Если вы до сих пор не приняли решение о том, как вы бы хотели создать EXE из сценария PowerShell, взгляните на таблицу ниже. Эта таблица дает общий обзор функций каждого инструмента, чтобы помочь вам решить, какой инструмент станет вашим выбором конвертера PS1 в EXE.

Features Comparison

Source:
https://adamtheautomator.com/ps1-to-exe/