O Guia De Fato para Converter um PS1 para EXE (7 Maneiras)

Você pode invocar scripts do PowerShell de muitas maneiras diferentes, mas todos têm uma queda: você não pode simplesmente executá-los como um programa Windows padrão (EXE). Talvez você queira impedir a edição do código em um script ou talvez facilitar para seus usuários executarem scripts. É hora de aprender como converter um PS1 em um EXE.

Neste tutorial, você aprenderá como usar geradores de PS1 para EXE e também poderá compará-los para decidir qual é o melhor para sua preferência.

Requisitos

Diferentes ferramentas são demonstradas ao longo deste tutorial com instruções passo a passo sobre como converter PS1 para EXE. Certifique-se de ter todos os requisitos abaixo para acompanhar.

  • A Windows computer with an administrator privileges
  • A partir do Windows 7, 8.1 e 10, o PowerShell já está incluído ao instalar o sistema operacional. Embora alguns scripts possam ser executados com o PowerShell 3.0, é muito melhor obter o PowerShell 5.1 ou o PowerShell 7
  • Seu política de execução do PowerShell configurado para permitir a execução de scripts

PS2EXE

A utilidade PS2EXE é a primeira ferramenta em nossa lista. O PS2EXE é um módulo PowerShell gratuito e de código aberto que, de acordo com o autor Ingo Karstein, “não converte o script do PowerShell para outro idioma. Ele encapsula o script com um host leve do PowerShell escrito em C# e compila o código-fonte C# gerado dinamicamente na memória para um arquivo EXE.”

Visite o blog de Ingo Karstein para saber mais sobre como o PS2EXE começou. O desenvolvimento do módulo foi interrompido por volta de 2017, mas Markus Scholtes assumiu a evolução do PS2EXE, criando também uma versão com interface gráfica.

Instalando o Módulo PS2EXE

O PS2EXE começou como um script do PowerShell, e quando Markus Scholtes assumiu o desenvolvimento, um módulo foi disponibilizado. Como o PS2EXE usa o módulo para converter seu script em um executável, você precisará instalá-lo da PowerShell Gallery.

Siga as instruções abaixo para instalar o módulo PS2EXE.

  1. Abra um console do PowerShell como administrador.

2. Execute o comando Install-Module para baixar e instalar o módulo da PowerShell Gallery

Install-Module ps2exe

3. Digite Y e pressione Enter quando vir a mensagem sobre um repositório não confiável. Não se preocupe. Essa mensagem é inofensiva.

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

Convertendo PS1 para EXE via Linha de Comando

O PS2EXE oferece duas maneiras de converter scripts do PowerShell para EXEs: através da linha de comando e de uma interface gráfica. Vamos primeiro abordar o uso da linha de comando.

Para converter um único script do PowerShell para EXE via linha de comando, é necessário uma única linha fornecendo o comando principal do PS2EXE (Invoke-PS2EXE) seguido pelo caminho do script a ser convertido e o caminho para o EXE que você deseja criar.

## Use o nome completo do comando
Invoke-ps2exe .\source.ps1 .\target.exe

## Use o alias
ps2exe .\source.ps1 .\target.exe

Agora você pode executar target.exe, e ele invocará o código definido no script source.ps1. Se você não usou o parâmetro NoConsole ao converter seu script, um console do PowerShell aparecerá ao executar o arquivo target.exe.

Ocultando o Console

No exemplo anterior, ao executar target.exe, um console típico do PowerShell aparecerá. Na maioria das vezes, você não deseja ver isso. Para evitar isso, você pode usar o parâmetro NoConsole ao criar o EXE, como mostrado abaixo.

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

Você também pode optar por compilar o EXE apenas para a execução x86 ou x64, entre outras opções. Você pode encontrar uma lista de parâmetros disponíveis na página de lançamento do GitHub.

Convertendo PS1 para EXE através da Ferramenta PS2EXE-GUI

Se você não é fã da linha de comando, também pode usar uma interface gráfica com o módulo PS2EXE. Construída um pouco mais tarde, a versão GUI fornece quase todas as mesmas funcionalidades que a versão da linha de comando.

Só leva alguns cliques para converter PS1 para EXE com a versão GUI do PS2EXE. E ao contrário da linha de comando, você pode navegar e selecionar o arquivo de origem (PS1) a partir de uma caixa de diálogo de navegação do Explorador de Arquivos agradável.

Para executar a versão GUI, você precisará ter o .NET 4.x em seu computador. Se você só tem .NET 3.5x, você pode baixar a versão PS2EXE-GUI para .NET 3.5x separadamente.

Supondo que você já tenha instalado o módulo PowerShell PS2EXE de cima, abra o Explorador de Arquivos e navegue para uma das pastas de módulo PS2EXE abaixo e abra a pasta que representa a versão do módulo.

Windows 32 bits: C:\Program Files (x86)\WindowsPowerShell\Modules\ps2exe\<versão>

Windows 64 bits: C:\Program Files\WindowsPowerShell\Modules\ps2exe\<versão>

Dentro destas pastas, você encontrará um arquivo chamado Win-PS2EXE.exe.

  1. Abra o utilitário C:\Program Files\WindowsPowerShell\Modules\ps2exe\<versão>\Win-PS2EXE.exe.

2. Clique nos três pontos diretamente à direita da caixa de Arquivo de origem para localizar o script PS1 que você deseja converter.

3. Defina o valor para o Arquivo de destino e certifique-se de incluir a extensão de arquivo .exe.

4. Escolha qualquer personalização para a conversão que desejar abaixo. Esta é simplesmente uma representação gráfica da configuração que você pode usar para o seu script, assim como a versão de linha de comando.

5. Clique em Compilar para iniciar o processo de conversão.

Converting PS1 to EXE with PS2EXE GUI

6. Quando você clicar no botão Compilar, o PS2EXE abrirá uma sessão do PowerShell e realizará a conversão. Quando terminar, pressione Enter ou feche a janela do console.

Successfully Converted PS1 to EXE

FYI: Alguns arquivos executáveis compilados com o PS2EXE podem ser detectados como vírus pelo seu software antivírus. Se isso acontecer, certifique-se de relatar esses falsos positivos ao fornecedor do seu antivírus.

PS1 para EXE

PS1 para EXE é outra aplicação de desktop gratuita desenvolvida pela F2KO Software que permite converter um PS1 para um arquivo EXE. O Ps1 to Exe, ao contrário do PS2EXE, é uma ferramenta GUI completa com um editor de script simples.

Assim como o PS2EXE, o Ps1 to Exe também possui tanto a versão GUI quanto a de linha de comando. No entanto, em vez do console do PowerShell, o Ps1 to Exe exige que você execute os comandos dentro do Prompt de Comando.

Infelizmente, embora o site da F2KO ainda esteja ativo, parece não haver maneira de baixar o PS1 to EXE de lá. Felizmente, um instalador para download dessa ferramenta tem circulado na internet.

Vamos ver como executar e usar o PS1 to EXE para criar um EXE a partir de um script do PowerShell.

Conversão de PS1 para EXE usando a GUI

Depois de instalar e iniciar o Ps1 to Exe, você perceberá que o PS1 to EXE possui um editor de scripts simples. Dentro deste editor de scripts, você pode construir e salvar scripts e clicar em um botão para convertê-los.

O Ps1 to Exe suporta o dot-sourcing; observe como outro arquivo PS1 foi chamado com a linha de comando abaixo.

## Chamar AppLogsComplete.ps1
try { .\AppLogsComplete.ps1 } catch { exit }

Para converter um script para um EXE com o PS1 to EXE:

  1. Abra a ferramenta PS1 to EXE a partir da sua área de trabalho.

2. Clique em Arquivo —> Abrir, encontre o script que deseja converter e abra-o.

Depois de abrir o script, configure como deseja que o EXE compilado seja executado. No lado direito da tela, você verá um painel com três abas para explorar. Cada uma dessas abas tem uma opção de configuração diferente que você pode escolher.

Configuring The EXE Output Settings

3. Para adicionar scripts dependentes, clique na aba Embutir e clique em Adicionar.

4. Quando estiver satisfeito com as opções de conversão, clique no botão Converter na barra de ferramentas superior para converter o script em um EXE.

Adding Dependent Scripts And Converting Script to EXE

Convertendo PS1 para EXE usando a Linha de Comando

Se preferir usar a linha de comando, o PS1 to EXE CLI é chamado de ps1_to_exe.exe, mas usá-lo é um pouco complicado.

Com o PS1 to EXE aberto:

  1. Abra um Prompt de Comando como administrador

2. Altere o diretório de trabalho para a pasta de instalação do PS1 to EXE.

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

3. Execute ps1_to_exe para converter o PS1 em um executável.

O comando abaixo inclui também um script dependente no arquivo EXE compilado e define a plataforma alvo dos arquivos executáveis para um sistema operacional Windows de 64 bits.

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

Abaixo está uma demonstração do processo de conversão real e detalhes de saída.

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

IExpress 2.0

Se você preferir não baixar mais uma ferramenta, está com sorte, pois você tem a antiga utilidade IExpress à sua disposição. O IExpress é um aplicativo integrado ao Windows geralmente utilizado para empacotar arquivos ou criar instaladores de software.

Por incrível que pareça, o IExpress também pode converter scripts do PowerShell (PS1) em arquivos EXE, compilando os arquivos de dependência em um único arquivo executável!

Para converter um simples script do PowerShell em um EXE:

  1. Você deve abrir o IExpress como administrador. Pressione as teclas Windows*+R* para abrir a caixa de diálogo Executar, digite iexpress e pressione as teclas Ctrl+Shift+Enter.
Running IExpress As Administrator

2. Na página inicial do IExpress, selecione Criar novo arquivo de Diretiva de Autoextração e clique em Próximo para configurar seu pacote. O arquivo de Diretiva de Autoextração (SED) (Self Extraction Directive) controla as opções usadas ao construir um pacote de instalação; pense nele como um arquivo de configuração.

Create New Self Extraction Directive File

3. Selecione a opção Extrair arquivos e executar um comando de instalação e clique em Avançar. Se você estiver criando um instalador de software, esta opção extrai os arquivos que você incluirá no pacote. Esta opção também permite que você escreva um comando personalizado para executar o script quando você executar o arquivo executável.

Selecting An Action To Take When Running The EXE

4. Agora forneça um Título do Pacote e clique em Avançar. O título do pacote aparecerá em todos os prompts que o usuário verá durante a instalação.

O título do pacote só se aplica se você estiver criando um instalador de software. Neste caso, o título não importa.

Setting A Title For The Package

6. Em seguida, escolha Sem prompt. Escolher Sem prompt não solicita ao usuário uma caixa de diálogo desnecessária quando eles executam o EXE.

No Prompt

6. Se você estiver criando o pacote para um projeto que requer um Contrato de Licença do Usuário Final (EULA), você pode optar por adicionar uma licença para mostrar quando você executar o EXE. Para esta demonstração, no entanto, escolha a opção Não exibir licença e clique em Avançar.

Adding an End User License Agreement

7. Agora clique em Adicionar e procure todos os scripts que você gostaria de incluir neste EXE. Certifique-se de incluir o script principal que pretende chamar e quaisquer scripts dependentes e outros arquivos que os scripts referenciam.

Selecting Files To Include In The Package

8. Na janela Programa de Instalação para Iniciar, forneça o caminho para o mecanismo powershell.exe usando o parâmetro File. Além disso, certifique-se de definir o parâmetro ExecutionPolicy como Bypass para garantir que quaisquer políticas de execução pré-configuradas não impeçam a execução do script.

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

9. Em seguida, você pode definir como deseja que as janelas do EXE se comportem quando executadas. Se o EXE deverá ser executado em segundo plano, escolha Oculto e clique em Próximo. Oculto é o comportamento de janela mais comum.

Selecting EXE’s Window Behavior On Execution

10. Como você está apenas executando um EXE em segundo plano, não há necessidade de incluir uma Mensagem de Conclusão. Selecione Sem Mensagem e clique em Próximo.

Setting Up Post Installation Message

11. Agora, selecione o caminho para o EXE que você gostaria de criar. Aqui também é possível habilitar algumas opções diferentes. Quando estiver completo, clique em Próximo.

  • Ocultar Animação de Progresso de Extração de Arquivo do Usuário – Se o seu EXE rodar em segundo plano, mantenha esta opção desabilitada.
  • Armazenar Arquivos usando Nome de Arquivo Longo dentro do Pacote – Para suportar Nomes de Arquivos Longos durante o processo de extração ao executar o EXE. A opção deve ser deixada desabilitada se você for executar o pacote no Win 95 e estiver utilizando um arquivo INF durante a instalação.
Setting Up Target Path And File Name

12. Se você deseja que o EXE invoque uma reinicialização após o script ser concluído, aqui você pode selecionar Sempre reiniciar. Após selecionar uma opção, clique em Próximo.

Choosing Whether To Require A Restart Or Not

13. Agora selecione Salvar arquivo de Diretiva de Autoextração (SED) e clique em Próximo. Salvar um arquivo SED permite que você modifique quaisquer opções que tenha fornecido ao longo deste assistente em um momento posterior. O arquivo SED contém respostas para todos os valores fornecidos até agora.

Saving Information About The Package Configuration

14. Agora, tudo o que resta é compilar o pacote. Clique em Avançar e você verá um registro do processo. Para concluir a criação do pacote, clique em Concluir, e está pronto.

Requerendo Privilégios de Administrador

Se você tem um script que precisa ser executado como administrador, o IExpress não oferece uma opção para fazer isso, mas ainda é possível.

Antes de executar o IExpress, copie o código abaixo e cole-o no início do seu script. Este trecho de código verifica se o script está sendo executado como administrador. Se não estiver, ele será fechado e o script será executado automaticamente com privilégios de administrador.

Lembre-se de que você precisa alterar o parâmetro WindowStyle **na tela Mostrar Janela dependendo de como deseja mostrar ou ocultar a janela do EXE ao executá-lo.

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
## Testar se o script está sendo executado como administrador, se não, executá-lo novamente como administrador
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))
            ## Estilos de Janela: Normal, Minimizado, Maximizado e Oculto

						## ------> O RESTO DO SEU SCRIPT VAI AQUI <------ ##

        }
        catch{
            exit
        }
    }
    exit
}

ISE Steroids

Se você gosta de escrever scripts no PowerShell ISE, esta ferramenta combina com o seu estilo. ISE Steroids é uma extensão para o editor PowerShell ISE, empacotada como um módulo PowerShell que adiciona muitos recursos ao ISE.

O ISE Steroids possui muitos recursos, mas aquele pelo qual você está interessado é a sua capacidade de converter um script em um arquivo executável (EXE), então vamos lá.

  1. Supondo que você já tenha o ISE Steroids instalado, abra o PowerShell ISE.

2. Na console integrada, execute Start-Steroids para iniciar a extensão e carregar o Steroids.

3. Abra ou escreva um novo script na janela do editor. Este tutorial utilizará esses arquivos.

4. Clique em Ferramentas —> Transformar Código em EXE, exatamente como na captura de tela abaixo.

Compiling PS1 to EXE

5. Agora, defina todas as opções que deseja aplicar ao EXE resultante na pequena janela, como a que está abaixo. Essas opções são parâmetros, os mesmos do PS2EXE, para configurar as propriedades e comportamento do seu arquivo EXE.

Configuration For The Executable File

6. Depois de definir todas as opções, clique no botão Criar Aplicativo. O ISE Steroids então pedirá para você selecionar um caminho de destino. Depois disso, você terá convertido seu PS1 para EXE.

Visual Studio Code e PowerShell Pro Tools

Para o nosso próximo editor, apresentamos o Visual Studio (VS) Code. O VS Code é a substituição recomendada pela Microsoft para o PowerShell ISE e tem sido adotado por muitos desenvolvedores do PowerShell.

Embora o VS Code não tenha uma maneira nativa de converter scripts do PowerShell para EXEs, você ainda pode fazer isso com a extensão PowerShell Pro Tools. Além de converter scripts para EXE, a extensão PowerShell Pro Tools ajuda você a empacotar scripts, inclui um designer de GUI e muito mais.

As Ferramentas Pro do PowerShell requerem tanto o .NET 4.6.2 (ou posterior) Developer Pack quanto o .NET Core 1.0 ou posterior para empacotar scripts.

Você está usando o Get-LatestAppLog3.ps1 e AppLogsComplete.ps1 para esta demonstração.

Supondo que você tenha o VS Code e a extensão PowerShell Pro Tools instalados:

  1. Abra o VS Code e um script do PowerShell para converter em um EXE.

2. No canto superior direito do VS Code, clique no botão Empacotar Script como Exe como mostrado abaixo.

Compiling PowerShell Script To An EXE

3. Quando você cria um EXE a partir de um script pela primeira vez, o PowerShell Pro Tools criará um arquivo package.psd1 na raiz do espaço de trabalho atual.

Showing Workspace Root and PowerShell Data File (PSD1)

4. Dentro do arquivo package.psd1, o caminho exato do script a ser convertido é automaticamente preenchido para a chave Root. Defina a chave Caminho de Saída para especificar o caminho para salvar o EXE, como mostrado abaixo.

Setting up Root and Output Path

5. Quando você cria um EXE a partir de um script, você notará vários mensagens de log no painel de Saída na parte inferior da tela. Se algum erro ocorrer durante a compilação do script, você os verá exibidos aqui.

Logs Shown In The Output Pane

Compilando Outros Scripts no Mesmo EXE

Se você tiver scripts dependentes chamados em seu script principal, a extensão PowerShell Pro Tools pode cuidar disso também. Para fazer isso, o PowerShell Pro Tools requer que você dot-source quaisquer scripts que você gostaria de incluir com o EXE.

O script Get-LatestAppLog3.ps1 abaixo é o script principal a ser compilado. Dentro dele, ele executa o script AppLogsComplete.ps1. Para garantir que o PowerShell Pro Tools inclua o arquivo AppLogsComplete.ps1 dependente, você deve dot source o script ou trazê-lo para o escopo do script atual.

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

Depois de ter carregado quaisquer scripts dependentes, clique novamente em Package Script as Exe para começar a converter seus scripts em um arquivo executável.

O PowerGUI

O PowerGUI foi um dos editores originais de script do PowerShell. Embora pareça ter sido esquecido há muito tempo, ainda é possível encontrar cópias na web. Por que falar de um editor de script do PowerShell há muito esquecido? Porque ele tem um conversor PS1 para EXE integrado!

Embora o site do PowerGUI não exista mais, ainda é possível encontrar uma cópia em sites como Softpedia.

Compilando Script PS1 para um EXE

Após instalar o PowerGUI, inicie-o e você verá uma Página Inicial. Para começar a compilar seus scripts, você pode criar um novo script ou abrir um existente na barra de ferramentas, como mostrado na captura de tela abaixo.

Create a New Script or Open an Existing One

Depois de estar satisfeito com o seu script, clique no menu Ferramentas. Em seguida, escolha Compilar Script ou pressione Ctrl+F9 no seu teclado.

Initiate Compiling Script to EXE

Agora, configure como você gostaria que o EXE fosse executado após a conversão. A janela Compilar Script, como mostrado abaixo, oferece diferentes opções para o comportamento do EXE.

  1. Clique no botão Procurar e localize o seu PS1 que deseja converter.

2. O PowerGUI suporta o Framework de Destino do Microsoft .NET Framework 3.5 até o .NET Framework 4.0.

3. Se você só deseja executar o EXE em segundo plano, desative a opção Mostrar janela do Console do PowerShell quando o script for executado.

4. Você também pode clicar no botão Dependências (canto inferior esquerdo) se tiver outros arquivos para incluir. Geralmente, são outros scripts do PowerShell nos quais seu script depende.

5. Quando estiver satisfeito com a configuração, clique em OK para começar a converter seu PS1 em EXE.

Configuring Compiled EXE Behavior

Em um nota lateral, você notará uma desvantagem com o PowerGUI em termos de controlar como deseja que o EXE seja executado. O PowerGUI não oferece muitas opções, como adicionar parâmetros.

O PowerGUI também não oferece a opção de incorporar informações como direitos autorais, versão e descrição, ao contrário de outros geradores de PS1 para EXE. Mas se isso não te incomoda muito, então o PowerGUI é uma boa descoberta que você pode manter.

PowerShell Studio

Para encerrar nossa lista de conversores de PS1 para EXE, vamos terminar com um dos IDEs do PowerShell mais ricos em recursos, PowerShell Studio da Sapien Technologies. Construído do zero como um IDE exclusivamente para PowerShell, seria um desrespeito ao PowerShell Studio mostrar apenas sua capacidade de converter PS1s em EXEs. Ainda assim, temos apenas uma quantidade limitada de espaço!

Tal como o PowerShell Pro Tools no Visual Studio Code, o PowerShell Studio também tem requisitos rigorosos para empacotar scripts; como .NET Framework 4.8, .NET 5 para PowerShell 7 e Visual Studio 2015-2019 Runtime

Supondo que tenha o PowerShell Studio instalado, abra o PowerShell Studio e crie ou abra um script PowerShell existente. Este tutorial usará o script Get-LatestAppLog3.ps1.

Navegando nas Configurações

Antes de converter um script no PowerShell Studio, você deve primeiro aprender as várias maneiras de alterar o comportamento do arquivo EXE resultante.

Clique no botão Package no canto superior direito da janela e escolha Settings. Isso abre a janela Script Packager, onde você pode definir todas as opções disponíveis.

Packaging Script To An Executable File

Cada opção no Script Packager desempenha um papel importante na forma como você deseja que seja o resultado do arquivo EXE. Essas opções são demonstradas nas seguintes seções com capturas de tela.

Motor do Script

A seção Motor do Script foca na plataforma de destino e no motor do script para compilar seu arquivo executável.

Comece selecionando seu Alvo. Você pode escolher uma versão de 32 bits ou 64 bits do Windows, ou pode escolher ambas para flexibilidade. O PowerShell Studio criará um arquivo EXE para cada plataforma que você escolher aqui.

Setting up Target Platform And PowerShell Scrip Engine

Configurações de Saída

Esta seção tem opções para configurar como o arquivo EXE ficará após a compilação.

  • Arquivo de saída – O nome do arquivo EXE resultante.

Não inclua uma extensão de arquivo (.exe) pois ela será definida automaticamente para você no campo.

  • Pasta de saída – Onde o PowerShell Studio salvará o arquivo executável.
  • Resolver e incluir scripts externos – Certifique-se de que esta opção esteja marcada se você tiver scripts dependentes em seu script principal. Se você não habilitar isso, os scripts externos serão ignorados durante a compilação do seu arquivo executável.

Sempre certifique-se de que quaisquer scripts dependentes estejam na mesma pasta do script principal.

  • Assinatura – Um lugar onde você pode procurar por um certificado para assinar o EXE juntamente com a senha do certificado (se houver).
Managing The Output Settings For The Executable File

Arquivos de Ícone

Um ícone ajuda a distinguir aplicativos uns dos outros, e a seção de Arquivos de Ícone oferece essa opção para adicionar um ícone ao seu arquivo executável.

Para adicionar um arquivo de ícone, clique no botão Adicionar Arquivo ou simplesmente arraste e solte o arquivo de ícone na seção Arquivos de Ícone.

Add Icon Files

Restrições

Na seção Restrições, você pode incluir ou excluir critérios para permitir a execução do EXE.

Verificar um Sistema Operacional neste campo garantirá que o EXE resultante apenas execute nesse sistema operacional. Da mesma forma, você pode definir critérios como um usuário específico deve estar logado, o computador deve ter um determinado endereço MAC e muito mais.

Como você pode ver abaixo, você tem total controle sobre quando o EXE resultante será executado.

Adding Security Via Execution Restrictions

Informações da Versão

Quando o PowerShell Studio cria um EXE, esse EXE possui vários atributos de arquivo. Na seção Informações da Versão, você pode definir como esses atributos serão.

Aqui você pode definir atributos como Versão do Arquivo, Versão do Produto, Direitos Autorais e assim por diante. Você pode ver todos os atributos disponíveis abaixo.

Setting File Version Information

Opções de Compilação

Por fim, você encontrará uma seção de Opções de Compilação. Nesta seção, você pode adicionar comandos personalizados pré-compilação ou pós-compilação para executar. Esta opção executará comandos do PowerShell antes ou depois de compilar o script em um arquivo executável.

Vamos dizer que você queira executar algum código logo após o PowerShell Studio terminar de criar o EXE. Para fazer isso, clique no botão Novo (Inserir) na caixa de Comandos pós-compilação. Tanto os comandos pré-compilação quanto os pós-compilação aceitam comandos do PowerShell diretamente.

Alternativamente, você pode clicar no botão Adicionar Arquivo (reticências) e selecionar outra aplicação ou script do PowerShell para executar.

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

Depois de configurar tudo, clique em OK para empacotar o script em um executável. A localização do arquivo abrirá automaticamente para você verificar o arquivo executável.

Contabilização das Dependências de Scripts PowerShell Externos

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.

Quando um script contém uma referência a outro script, e esse script é convertido em um EXE, o caminho pode mudar. Quando isso acontece, o código PowerShell dentro do EXE não consegue encontrar o script dependente e falha.

Talvez você tenha um script que gostaria de converter e que chame outros scripts na mesma pasta. Quando você executa o script via console do PowerShell, ele consegue encontrar esses scripts, já que todos estão no mesmo diretório de trabalho. Quando você converte um script em um EXE, isso pode quebrar.

Se você pretende converter um PS1 em um EXE e esse script chama outros scripts no mesmo diretório, adicione o trecho de código a seguir ao topo do seu script.

O trecho de código abaixo resolve o caminho de um script externo que você está executando a partir do script principal, desde que ambos estejam no mesmo diretório.

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 = "." } }

Comparação de Recursos

Se você ainda não decidiu como gostaria de criar um EXE a partir de um script PowerShell, dê uma olhada na tabela abaixo. Esta tabela fornece uma visão geral das características de cada ferramenta para ajudá-lo a decidir qual ferramenta escolher como seu conversor de PS1 para EXE.

Features Comparison

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