Você pode invocar scripts do PowerShell de várias maneiras diferentes, mas todos eles têm uma desvantagem: você não pode simplesmente executá-los como um programa Windows padrão (EXE). Talvez você queira evitar a edição do código em um script ou facilitar para seus usuários executarem scripts. É hora de aprender como converter um arquivo PS1 para um EXE.
Neste tutorial, você aprenderá como usar geradores de PS1 para EXE e também poderá compará-los para decidir qual é o melhor de acordo com sua preferência.
Requisitos
Diferentes ferramentas são demonstradas ao longo deste tutorial com instruções passo a passo sobre como converter um arquivo PS1 para EXE. Certifique-se de ter todos os requisitos abaixo para acompanhar.
- A Windows computer with an administrator privileges
- No 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 PowerShell 5.1 ou PowerShell 7
- Seu política de execução do PowerShell deve permitir a execução de scripts
PS2EXE
A utilidade PS2EXE é a primeira ferramenta da nossa lista. PS2EXE é um módulo PowerShell gratuito e de código aberto que, segundo o autor Ingo Karstein, “não converte o script do PowerShell para outra linguagem. Ele encapsula o script com um host PowerShell leve escrito em C# e compila o código fonte C# gerado dinamicamente na memória para um arquivo EXE.”
Visite o blog do Ingo Karstein para saber mais sobre como o PS2EXE começou. O desenvolvimento do módulo parou por volta de 2017, mas Markus Scholtes assumiu a evolução do PS2EXE criando uma versão GUI também.
Instalando o Módulo PS2EXE
O PS2EXE começou como um script PowerShell, e quando Markus Scholtes assumiu o desenvolvimento, um módulo ficou disponível. Como o PS2EXE usa o módulo para converter seu script em um executável, você precisará instalá-lo a partir da Galeria PowerShell.
Siga as instruções abaixo para instalar o módulo PS2EXE.
- Abra um console 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 você vir o aviso sobre um repositório não confiável. Não se preocupe. Esta mensagem é inofensiva.
Convertendo PS1 para EXE via Linha de Comando
O PS2EXE oferece duas maneiras de converter scripts do PowerShell em arquivos EXE; via linha de comando e uma interface gráfica. Vamos primeiro abordar o uso da linha de comando.
Para converter um único script do PowerShell em EXE via linha de comando, você precisa de uma única linha fornecendo o comando principal do PS2EXE (Invoke-PS2EXE
) seguido pelo caminho do script a ser convertido e o caminho do 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 quer 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.
Conversão de PS1 para EXE via Ferramenta PS2EXE-GUI
Se você não gosta da linha de comando, também pode usar uma interface gráfica com o módulo PS2EXE. Desenvolvida um pouco mais tarde, a versão GUI oferece praticamente todas as mesmas funcionalidades da versão de linha de comando.
Leva apenas 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) em uma caixa de diálogo agradável do File Explorer.
Para executar a versão GUI, você precisará ter o .NET 4.x em seu computador. Se você tiver apenas o .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 acima, abra o File Explorer e navegue para uma das pastas de módulos PS2EXE abaixo e abra a pasta que representa a versão do módulo.
Windows 32 bits: C:\Program Files (x86)\WindowsPowerShell\Modules\ps2exe\<version>
Windows 64 bits: C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>
Dentro dessas pastas, você encontrará um arquivo chamado Win-PS2EXE.exe.
- Abra a utilidade C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>\Win-PS2EXE.exe.
2. Clique nos três pontos diretamente à direita da caixa Arquivo de origem para localizar o script PS1 que você deseja converter.
3. Defina o valor para a Arquivo de destino e certifique-se de incluir a extensão do arquivo .exe.
4. Escolha quaisquer personalizações para a conversão que desejar abaixo. Esta é simplesmente uma representação gráfica da parâmetros 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. Uma vez concluído, 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
O PS1 para EXE é outra aplicação gratuita para desktop desenvolvida pela F2KO Software que permite converter um arquivo 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 versões tanto para GUI quanto para 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 uma maneira de baixar o PS1 to EXE de lá. Felizmente, um instalador baixável 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.
Converter PS1 para EXE Usando a Interface Gráfica
Depois de instalar e iniciar o Ps1 to Exe, você notará 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 dot-sourcing; observe como outro arquivo PS1 foi chamado com o 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. Do lado direito da tela, você verá um painel com três abas para explorar. Cada uma dessas abas possui uma opção de configuração diferente que você pode escolher.

3. Para adicionar scripts dependentes, clique na aba Embutir e depois 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 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. Agora execute ps1_to_exe para converter o PS1 em um executável.
O comando abaixo também inclui um script dependente no arquivo EXE compilado e define a plataforma de destino dos arquivos executáveis para um sistema operacional Windows de 64 bits.
Aqui está uma demonstração do processo de conversão real e detalhes de saída.

IExpress 2.0
Se você prefere não baixar mais uma ferramenta, está com sorte, porque você tem a antiga e clássica utilidade IExpress à sua disposição. O IExpress é um aplicativo embutido no Windows que geralmente é usado para empacotar arquivos ou criar instaladores de software.
Acontece que o IExpress também pode converter scripts PS1 em EXEs enquanto compila os arquivos de dependência todos juntos em um único arquivo executável!
Para converter um simples script do PowerShell em EXE:
- Você deve abrir o IExpress como administrador. Pressione a tecla Windows*+R* para abrir a caixa de diálogo Executar, digite iexpress e pressione a tecla Ctrl+Shift+Enter.

2. Na página de boas-vindas do IExpress, selecione Criar novo arquivo de Diretiva de Autoextração e clique em Avançar para configurar o seu pacote. O arquivo Diretiva de Autoextração (SED) 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 estiver criando um instalador de software, esta opção extrai arquivos que você incluirá no pacote. Esta opção também permite que você escreva um comando personalizado para executar o script quando 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 se aplica apenas 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 executam o EXE.

6. Se 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 executar o EXE. Para esta demonstração, porém, escolha a opção Não exibir licença e clique em Avançar.

7. Agora clique em Adicionar e navegue por todos os scripts que deseja incluir neste EXE. Certifique-se de incluir o script principal que pretende chamar e quaisquer scripts dependentes e outros arquivos aos quais os scripts fazem referência.

8. Na janela Programa de Instalação para Iniciar, forneça o caminho para o mecanismo powershell.exe usando o parâmetro Arquivo
. 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 deve ser executado em segundo plano, escolha Oculto e clique em Avançar. 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 Avançar.

11. Agora selecione o caminho para o EXE que você deseja criar. Aqui você também pode habilitar algumas opções diferentes. Quando terminar, clique em Avançar.
- Ocultar Animação de Progresso de Extração de Arquivos do Usuário – Se o seu EXE for executado em segundo plano, mantenha esta opção desabilitada.
- Armazenar Arquivos usando Nome de Arquivo Longo dentro do Pacote – Para suportar Nomes de Arquivo Longo 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 usando um arquivo INF durante a instalação.

12. Se desejar que o EXE invoque uma reinicialização após a conclusão do script, aqui você pode selecionar Sempre reiniciar. Após selecionar uma opção, clique em Avançar.

13. Agora selecione Salvar Arquivo de Diretiva de Autoextração (SED) e clique em Avançar. Salvar um arquivo SED permite modificar quaisquer opções fornecidas até agora neste 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 completar a criação do pacote, clique em Concluir e está pronto.
Requerendo Privilégios de Execução como Administrador
Se você possui um script que requer ser executado como administrador, o IExpress não oferece uma opção para isso, mas ainda é possível.
Antes de executar o IExpress, copie o código abaixo e cole-o no topo do seu script. Este trecho de código verifica se o script está sendo executado como administrador. Se não estiver, ele será encerrado e o script será executado novamente com privilégios de administrador automaticamente.
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 quando o executar.
ISE Steroids
Se você gosta de escrever scripts no PowerShell ISE, esta ferramenta se adequa ao seu estilo. ISE Steroids é uma extensão para o editor PowerShell ISE embalado como um módulo PowerShell que adiciona muitos recursos ao ISE.
- ISE Steroids tem muitos recursos, mas o que você está procurando é sua capacidade de converter um script em um arquivo 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 usará esses arquivos.
4. Clique em Ferramentas —> Converter Código em EXE, assim como na captura de tela abaixo.

5. Agora defina todas as opções que deseja aplicar ao EXE resultante na pequena janela, como a mostrada abaixo. Essas opções são parâmetros, iguais aos do PS2EXE, para configurar as propriedades e o 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ê escolher um caminho de destino. Depois disso, você terá convertido seu PS1 para EXE.
Visual Studio Code e PowerShell Pro Tools
Para o próximo editor, apresentamos o Visual Studio (VS) Code. O VS Code é a substituição recomendada pela Microsoft para o PowerShell ISE e foi adotado por muitos desenvolvedores do PowerShell.
Embora o VS Code não tenha uma maneira nativa de converter scripts do PowerShell em EXEs, você ainda pode fazer isso com a extensão PowerShell Pro Tools. Além de converter scripts em EXE, a extensão PowerShell Pro Tools ajuda a empacotar scripts, inclui um designer de GUI e muito mais.
As ferramentas do PowerShell Pro 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, conforme mostrado abaixo.

3. Ao criar 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. Ao criar um EXE a partir de um script, você notará várias mensagens de log no painel de Saída na parte inferior da tela. Se ocorrerem erros 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 deles também. Para fazer isso, o PowerShell Pro Tools requer que você faça referência a quaisquer scripts que deseje 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 dependente AppLogsComplete.ps1, você deve fazer referência ao script ou trazê-lo para o escopo do script atual.

Depois de ter dot-sourced quaisquer scripts dependentes, clique novamente em Package Script as Exe para começar a converter seus scripts em um arquivo executável.
O PowerGUI
PowerGUI foi um dos editores originais de scripts 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 scripts do PowerShell há muito esquecido? Porque ele possui um conversor integrado de PS1 para EXE!
Embora o site do PowerGUI não exista mais, ainda é possível encontrar uma cópia em sites como o 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 ficar satisfeito com 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, conforme mostrado abaixo, oferece diferentes opções que você pode escolher para o comportamento do EXE.
- Clique no botão Procurar e localize seu PS1 que deseja converter.
2. O PowerGUI suporta o Framework de Destino do Microsoft .NET Framework 3.5 ao .NET Framework 4.0.
3. Se você deseja que o EXE seja executado 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, 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 para EXE.

Em uma nota lateral, você notará uma desvantagem com o PowerGUI em termos de controle sobre 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 uma opção para 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 incomoda tanto, então o PowerGUI é uma boa opção que você pode manter.
PowerShell Studio
Para concluir 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 uma injustiça com o PowerShell Studio mostrar apenas sua capacidade de converter PS1s em EXEs. Ainda assim, temos apenas uma quantidade limitada de espaço!
Assim como o PowerShell Pro Tools no Visual Studio Code, o PowerShell Studio também tem requisitos rigorosos para empacotar scripts; tais como .NET Framework 4.8, .NET 5 para PowerShell 7 e Visual Studio 2015-2019 Runtime
Supondo que você tenha o PowerShell Studio instalado, abra o PowerShell Studio e crie ou abra um script existente do PowerShell. Este tutorial usará o script Get-LatestAppLog3.ps1.
Navegando pelas Configurações
Antes de converter um script no PowerShell Studio, você deve primeiro aprender a variedade de maneiras pelas quais pode alterar o comportamento do arquivo EXE resultante.
Clique no botão Package no canto superior direito da janela e escolha Settings. Isso abrirá a janela Script Packager, onde você pode definir todas as opções disponíveis para você.

Cada opção no Script Packager desempenha um papel importante na forma como você deseja que a saída do arquivo EXE seja. Essas opções são demonstradas nas seções a seguir com capturas de tela.
Motor de Script
A seção do Motor de Script foca na plataforma de destino e no motor de script para compilar seu arquivo executável.
Comece selecionando seu Destino. Você pode escolher entre 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 resultará 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 será configurada 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 garanta que quaisquer scripts dependentes estejam na mesma pasta que o script principal.
- Assinatura – Um local onde você pode procurar por um certificado para assinar o EXE junto com a senha do certificado (se tiver uma).

Arquivos de Ícone
Um ícone ajuda a distinguir aplicativos uns dos outros, e a seção 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 de Restrições, você pode incluir ou excluir critérios para permitir a execução de arquivos EXE.
Ao marcar um Sistema Operacional nesta área, você garantirá que o arquivo EXE resultante será executado apenas nesse sistema operacional. Da mesma forma, você pode definir critérios, como a necessidade de um usuário específico estar conectado, o computador deve ter um determinado endereço MAC e muito mais.
Como mostrado abaixo, você tem controle total sobre quando o arquivo EXE resultante será executado.

Informações da Versão
Ao criar um arquivo EXE no PowerShell Studio, esse arquivo possui vários atributos de arquivo. Na seção de Informações da Versão, você pode definir como esses atributos se parecem.
Aqui, você pode configurar atributos como Número da Versão do Arquivo, Número da Versão do Produto, Direitos Autorais, e assim por diante. Todos os atributos disponíveis estão listados abaixo.

Opções de Compilação
Por fim, você encontrará a 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. Essa opção permitirá a execução de comandos do PowerShell antes ou depois de compilar o script para um arquivo executável.
Vamos supor que você queira executar algum código logo após o PowerShell Studio concluir a criação do 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 se abrirá automaticamente para que você possa verificar o arquivo executável.
Contabilizando Dependências Externas de Scripts do 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.
Quando um script contém uma referência a outro script, e esse script é convertido para um EXE, o caminho pode mudar. Quando isso acontece, o código do PowerShell dentro do EXE não consegue encontrar o script dependente e falha.
Talvez você tenha um script que gostaria de converter e que chama outros scripts no mesmo diretório. Quando você executa o script via console do PowerShell, ele consegue encontrar esses scripts, pois todos estão no mesmo diretório de trabalho. Quando você converte um script para um EXE, isso pode quebrar.
Se você pretende converter um arquivo PS1 para um EXE e esse script chama outros scripts no mesmo diretório, adicione o seguinte trecho de código 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 ainda não decidiu como gostaria de criar um EXE a partir de um script do PowerShell, dê uma olhada na tabela abaixo. Esta tabela oferece uma visão geral das características de cada ferramenta para ajudá-lo a decidir qual ferramenta será sua escolha para converter PS1 em EXE.
