terça-feira, outubro 24, 2017
Breaking News
Home » Dicas de Programas & Sites » Convertendo Powershell Scripts em Executáveis (ps1 para exe)

Convertendo Powershell Scripts em Executáveis (ps1 para exe)

Olá, Pessoal

A dica de hoje pode facilitar a vida de quem deseja automatizar tarefas com Powershell. Conforme o título sugere, o script abaixo converte arquivos Powershell (PS1) em executáveis (EXE).

Descrição do desenvolvedor

Nos últimos dias criei a ferramenta “PS2EXE” que é capaz de “converter” scripts do PowerShell para arquivos EXE “autônomos”.

Observação: Ele não converte o script PowerShell a uma outra línguagem. 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. O EXE resultante é um assembly .NET que contém o script de origem codificado no Base64.

O EXE inclui todas as coisas necessárias para executar um PowerShell através do modelo de objeto .NET. Baseia-se em classes no namespace System.Management.Automation que reúne o mecanismo PowerShell. – Portanto, o arquivo EXE não é um verdadeiro arquivo EXE “autônomo”. Precisa do PowerShell instalado para ser usado! E – claro – ele precisa do .NET Framework v2.0. Além disso, a “execução do script” deve ser permitida (ver cmdlet: set-execultionpolicy). – O EXE resultante é “MSIL” e pode ser executado como x64 ou x86.

A ferramenta “PS2EXE” em si é um script do PowerShell! – Faz a compilação na memória e gera o arquivo EXE. Ele usa a classe CSharpCodeProvider do namespace Microsoft.CSharp.

O script é realmente simples. Eu contém uma string multilinha que representa o host do PowerShell que escrevi.

Sintaxe:

Utilize o script com estes parâmetros:

-inputFile Arquivo de script do PowerShell
-outputFile nome do arquivo (com caminho) para o arquivo EXE de destino
-debug (opcional) gera informações de depuração no arquivo EXE de destino. O arquivo .CS gerado dinamicamente será armazenado ao lado do arquivo EXE de saída. Além disso, um arquivo .PDB será gerado para o arquivo EXE
-verbose (opcional) mostra também informações detalhadas – se houver.
-x86 (opcional) compilar EXE para executar como aplicativo de 32 bits
-x64 (opcional) compilar EXE para executar como aplicativo de 64 bits
-runtime20 (opcional) forçar a execução do EXE no PowerShell 2.0 usando o .NET 2.0
-runtime30 (opcional) forçar a execução do EXE no PowerShell 3.0 usando o .NET 4.0
-lcid (opcional) especifique ID de idioma para tópicos
-sta (opcional) Execute o ambiente PowerShell no modo Single Thread Apartment
-mta (opcional) Execute o ambiente PowerShell no modo Multithread Apartment
-noconsole (opcional) compilar script PS como aplicativo do Windows

Exemplo de uso:

O Exemplo acima cria “test.exe” fora do arquivo de origem do PowerShell “test.ps1”

Limitações: não é fácil criar um host PowerShell totalmente funcional, como “console host” (powershell.exe) ou “ISE” (powershell_ise.exe). Portanto, pode haver funcionalidades que não funcionem corretamente.

 

O EXE gerado também pode ser chamadas usando opções de linha de comando. Existem 4 opções que são usadas pelo host PowerShell:

-debug Força o EXE a ser depurado. Ele chama “System.Diagnostics.Debugger.Break ()”.
-extract: “Nome do arquivo” Extrai o script do PowerShell dentro do EXE e o salva como “Nome do arquivo”. O script não será executado.
-wait No final da execução do script, ele escreve “Pressione uma tecla …” e espera que uma tecla seja pressionada.
-end Todas as opções a seguir serão passadas para o script dentro do EXE. Todas as opções anteriores são usadas pelo EXE e não serão passadas para o script.

Verificado nas seguintes plataformas

Windows 10 No
Windows Server 2012 Yes
Windows Server 2012 R2 No
Windows Server 2008 R2 Yes
Windows Server 2008 Yes
Windows Server 2003 No
Windows 8 Yes
Windows 7 Yes
Windows Vista No
Windows XP No
Windows 2000 No

Download do Script:

 

Script – Convertendo Powershell para EXE (Ps1 para exe)

Downloads alternativo:

https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-Convert-PowerShell-9e4e07f1/file/134627/1/PS2EXE-v0.5.0.0.zip

 

Créditos

O artigo foi traduzido do Script Center Microsoft e os devidos créditos você confere abaixo:

https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-Convert-PowerShell-9e4e07f1

Sobre Diego Duarte

Diego Duarte Atua como coordenador de NOC, toca um violãozinho nas horas vagas e tenta eternamente entender o que o fez escolher TI

Veja também!

Logo Powershell

Obter chaves de produtos de sistemas locais e remotos

Neste artigo veremos como coletar a chave de Windows Remotamente de vários computadores e servidores. Rápido e Fácil

Um comentário

  1. Leonardo Lopes

    Muito útil esse post.

Este artigo lhe foi útil? comente e ajude outros acrescentando seu ponto de vista!