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:
Download alternativo:
https://github.com/ikarstein/ps2exe/releases
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
5 Comentários. Deixe novo
Muito útil esse post.
[…] Usuários pelo Power ShellConvertendo Powershell Scripts em Executáveis (ps1 para exe)Forçando o reset de senha no próximo logon através do Windows […]
Consegui usar com sucesso após um pequeno ajuste para detectar o PS 5, bom esse artigo, e cadê as suas redes sociais?
Link Está off
Link Corrigido.
abs