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.
- Abra um console do PowerShell como administrador.
2. Execute o comando Install-Module
para baixar e instalar o módulo da PowerShell Gallery
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.
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.
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.

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.
- 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.

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.

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.
Para converter um script para um EXE com o PS1 to EXE:
- 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.

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.

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:
- Abra um Prompt de Comando como administrador
2. Altere o diretório de trabalho para a pasta de instalação do 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.
Abaixo está uma demonstração do processo de conversão real e detalhes de saída.

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:
- 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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.
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á.
- 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.

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.

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:
- 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.

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.

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.

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.

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.

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.

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

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.
- 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.

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.

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.

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).

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.

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.

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.

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.

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.
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.
