La guía de facto para convertir un archivo PS1 a EXE (7 formas)

Puede invocar scripts de PowerShell de muchas maneras diferentes, pero todos tienen un inconveniente: no puede ejecutarlos simplemente como un programa estándar de Windows (EXE). Tal vez desee evitar la edición del código en un script o tal vez hacer que sea más fácil para sus usuarios ejecutar scripts. Es hora de aprender cómo convertir un PS1 a un EXE.

En este tutorial, aprenderá cómo utilizar generadores de PS1 a EXE, y también podrá compararlos para decidir cuál se adapta mejor a sus preferencias.

Requisitos

Se demuestran diferentes herramientas a lo largo de este tutorial con instrucciones paso a paso sobre cómo convertir PS1 a EXE. Asegúrese de tener todos los requisitos siguientes para seguir adelante.

  • A Windows computer with an administrator privileges
  • Desde Windows 7, 8.1 y 10, PowerShell ya está incluido al instalar el sistema operativo. Aunque algunos scripts pueden ejecutarse con PowerShell 3.0, es mucho mejor obtener PowerShell 5.1 o PowerShell 7
  • Su directiva de ejecución de PowerShell establecida para permitir la ejecución de scripts

PS2EXE

La utilidad PS2EXE es la primera herramienta en nuestra lista. PS2EXE es un módulo de PowerShell gratuito y de código abierto que, según el autor Ingo Karstein, “no convierte el script de PowerShell a otro lenguaje. Encapsula el script con un host de PowerShell ligero escrito en C# y compila el código fuente de C# generado dinámicamente en la memoria a un archivo EXE.”

Visita el blog de Ingo Karstein para saber más sobre cómo comenzó PS2EXE. El desarrollo del módulo se detuvo alrededor de 2017, pero Markus Scholtes se hizo cargo de la evolución de PS2EXE creando también una versión con GUI.

Instalación del Módulo PS2EXE

PS2EXE comenzó como un script de PowerShell, y cuando Markus Scholtes tomó el desarrollo, se creó un módulo disponible. Dado que PS2EXE utiliza el módulo para convertir tu script en un ejecutable, necesitarás instalarlo desde la PowerShell Gallery.

Sigue las instrucciones a continuación para instalar el módulo PS2EXE.

  1. Abre una consola de PowerShell como administrador.

2. Ejecute el comando Install-Module para descargar e instalar el módulo desde PowerShell Gallery

Install-Module ps2exe

3. Escriba Y y presione Enter cuando vea la indicación sobre un repositorio no confiable. No se preocupe. Este mensaje es inofensivo.

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

Conversión de PS1 a EXE a través de la línea de comandos

PS2EXE ofrece dos formas de convertir scripts de PowerShell a archivos EXE: a través de la línea de comandos y una interfaz gráfica. Comencemos cubriendo el uso de la línea de comandos.

Para convertir un solo script de PowerShell a EXE mediante la línea de comandos, se requiere una sola línea que proporcione el comando principal de PS2EXE (Invoke-PS2EXE), seguido de la ruta del script a convertir y la ruta del archivo EXE que desea crear.

## Utilice el nombre completo del comando
Invoke-ps2exe .\source.ps1 .\target.exe

## Utilice el alias
ps2exe .\source.ps1 .\target.exe

Ahora puede ejecutar target.exe, e invocará el código definido en el script source.ps1. Si no utilizó el parámetro NoConsole al convertir su script, aparecerá una consola de PowerShell al ejecutar el archivo target.exe.

Ocultar la Consola

En el ejemplo anterior, al ejecutar target.exe, aparecerá una consola de PowerShell típica. La mayoría de las veces, no querrá ver esto. Para evitarlo, puede utilizar el parámetro NoConsole al crear el EXE, como se muestra a continuación.

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

También puede optar por compilar el EXE solo para la ejecución x86 o x64, entre otras opciones. Puede encontrar una lista de parámetros disponibles en la página de lanzamiento en GitHub.

Convirtiendo PS1 a EXE a través de la herramienta PS2EXE-GUI

Si no eres fanático de la línea de comandos, también puedes utilizar una interfaz gráfica con el módulo PS2EXE. Construida un poco más tarde, la versión GUI proporciona casi todas las mismas funcionalidades que la versión de línea de comandos.

Solo necesitas unos pocos clics para convertir PS1 a EXE con la versión GUI de PS2EXE. Y a diferencia de la línea de comandos, puedes explorar y seleccionar el archivo fuente (PS1) desde un agradable cuadro de diálogo del explorador de archivos.

Para ejecutar la versión GUI, necesitarás tener .NET 4.x en tu computadora. Si solo tienes .NET 3.5x, puedes descargar la versión PS2EXE-GUI para .NET 3.5x por separado.

Suponiendo que ya has instalado el módulo PowerShell PS2EXE como se indica arriba, abre el Explorador de archivos y navega a cualquiera de las carpetas del módulo PS2EXE a continuación y abre la carpeta que representa la versión del módulo.

Windows 32 bits: C:\Program Files (x86)\WindowsPowerShell\Modules\ps2exe\<versión>

Windows 64 bits: C:\Program Files\WindowsPowerShell\Modules\ps2exe\<versión>

Dentro de estas carpetas, encontrarás un archivo llamado Win-PS2EXE.exe.

  1. Abre la utilidad C:\Program Files\WindowsPowerShell\Modules\ps2exe\<versión>\Win-PS2EXE.exe.

2. Haz clic en los puntos suspensivos directamente a la derecha de la caja Archivo fuente para localizar el script PS1 que deseas convertir.

3. Define el valor para el Archivo objetivo y asegúrate de incluir la extensión de archivo .exe.

4. Elige cualquier personalización para la conversión que desees a continuación. Esto es simplemente una representación gráfica de los parámetros que puedes usar para tu script, al igual que la versión de línea de comandos.

5. Haz clic en Compilar para iniciar el proceso de conversión.

Converting PS1 to EXE with PS2EXE GUI

6. Cuando hagas clic en el botón Compilar, PS2EXE abrirá una sesión de PowerShell y realizará la conversión. Una vez hecho, presiona Enter o cierra la ventana de la consola.

Successfully Converted PS1 to EXE

Nota: Algunos archivos ejecutables compilados con PS2EXE pueden ser detectados como virus por tu software antivirus. Si esto sucede, asegúrate de informar estos falsos positivos a tu proveedor de antivirus.

PS1 a EXE

PS1 a EXE es otra aplicación de escritorio gratuita desarrollada por F2KO Software que te permite convertir un archivo PS1 a un archivo EXE. A diferencia de PS2EXE, Ps1 to Exe es una herramienta GUI completa con un editor de scripts sencillo.

Al igual que PS2EXE, Ps1 to Exe también tiene tanto la versión GUI como la de línea de comandos. Sin embargo, en lugar de la consola de PowerShell, Ps1 to Exe requiere que ejecutes los comandos dentro del Símbolo del sistema.

Desafortunadamente, aunque el sitio web de F2KO aún está en línea, parece que no hay forma de descargar PS1 to EXE desde allí. Afortunadamente, un instalador descargable de esta herramienta ha estado circulando en Internet.

Vamos a ver cómo ejecutar y usar PS1 to EXE para crear un archivo EXE a partir de un script de PowerShell.

Conversión de PS1 a EXE usando la interfaz gráfica

Después de instalar y abrir Ps1 to Exe, notarás que PS1 to EXE tiene un editor de script simple. Dentro de este editor de script, puedes construir y guardar scripts y hacer clic en un botón para convertirlos.

Ps1 to Exe admite la inclusión de puntos; observa cómo se llamó a otro archivo PS1 con la línea de comandos que se muestra a continuación.

## Llamar a AppLogsComplete.ps1
try { .\AppLogsComplete.ps1 } catch { exit }

Para convertir un script en un EXE con PS1 to EXE:

  1. Abre la herramienta PS1 to EXE desde tu escritorio.

2. Haz clic en Archivo —> Abrir, encuentra el script que deseas convertir y ábrelo.

Una vez que tengas el script abierto, configura cómo deseas que se ejecute el EXE compilado. En el lado derecho de la pantalla, verás un panel con tres pestañas para explorar. Cada una de las pestañas tiene una opción de configuración diferente que puedes elegir.

Configuring The EXE Output Settings

3. Para agregar scripts dependientes, haz clic en la pestaña Insertar y luego en Agregar.

4. Cuando estés satisfecho con las opciones de conversión, haz clic en el botón Convertir en la barra de herramientas superior para convertir el script en un EXE.

Adding Dependent Scripts And Converting Script to EXE

Convertir PS1 a EXE Usando la Línea de Comandos

Si prefieres utilizar la línea de comandos, la CLI de PS1 to EXE se llama ps1_to_exe.exe pero su uso es un poco complicado.

Con PS1 to EXE abierto:

  1. Abre un Símbolo del sistema como administrador

2. Cambia el directorio de trabajo a la carpeta de instalación de PS1 to EXE.

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

3. Ahora ejecuta ps1_to_exe para convertir el PS1 en un ejecutable.

El comando a continuación también incluye un script dependiente en el archivo EXE compilado y establece la plataforma objetivo de los archivos ejecutables en un sistema operativo 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

A continuación se muestra una demostración del proceso de conversión real y los detalles de salida.

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

IExpress 2.0

Si prefieres no descargar otra herramienta, estás de suerte porque tienes la antigua utilidad IExpress a tu disposición. IExpress es una aplicación integrada en Windows que generalmente se utiliza para empaquetar archivos o crear instaladores de software.

¡Resulta que IExpress también puede convertir archivos PS1 a EXE mientras compila archivos de dependencia juntos en un solo archivo ejecutable!

Para convertir un simple script de PowerShell a EXE:

  1. Debes abrir IExpress como administrador. Presiona la tecla Windows*+R* para abrir el cuadro de diálogo Ejecutar, escribe iexpress y luego presiona la tecla Ctrl+Shift+Enter.
Running IExpress As Administrator

2. En la página de bienvenida de IExpress, selecciona Crear nuevo archivo de directiva de autoextracción y haz clic en Siguiente para configurar tu paquete. El archivo de directiva de autoextracción (SED) controla las opciones utilizadas al construir un paquete de instalación; piénsalo como un archivo de configuración.

Create New Self Extraction Directive File

3. Seleccione la opción Extraer archivos y ejecutar un comando de instalación y haga clic en Siguiente. Si está creando un instalador de software, esta opción extrae archivos que incluirá en el paquete. Esta opción también le permite escribir un comando personalizado para ejecutar el script cuando ejecute el archivo ejecutable.

Selecting An Action To Take When Running The EXE

4. Ahora proporcione un Título del paquete y haga clic en Siguiente. El título del paquete aparecerá en todas las indicaciones que verá el usuario durante la instalación.

El título del paquete solo se aplica si está creando un instalador de software. En este caso, el título no importa.

Setting A Title For The Package

6. A continuación, elija Sin indicación. Elegir Sin indicación no mostrará al usuario un cuadro de diálogo innecesario cuando ejecute el EXE.

No Prompt

6. Si está creando el paquete para un proyecto que requiere un Acuerdo de Licencia de Usuario Final (EULA), puede optar por agregar una licencia para mostrar al ejecutar el EXE. Sin embargo, para esta demostración, elija la opción No mostrar licencia y haga clic en Siguiente.

Adding an End User License Agreement

7. Ahora haga clic en Agregar y busque todos los scripts que desea incluir en este EXE. Asegúrese de incluir el script principal que pretende llamar y cualquier otro script dependiente y otros archivos a los que hagan referencia los scripts.

Selecting Files To Include In The Package

8. En la ventana Programa de instalación para iniciar, proporcione la ruta del motor powershell.exe utilizando el parámetro Archivo. Además, asegúrese de establecer el parámetro ExecutionPolicy en Bypass para garantizar que las políticas de ejecución preconfiguradas no impidan la ejecución del script.

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

9. A continuación, puedes definir cómo deseas que se comporte la ventana del EXE cuando se ejecute. Si el EXE se supone que debe ejecutarse en segundo plano, elige Oculto y haz clic en Siguiente. Oculto es el comportamiento de ventana más común.

Selecting EXE’s Window Behavior On Execution

10. Dado que solo estás ejecutando un EXE en segundo plano, no es necesario incluir un Mensaje de finalización. Selecciona Sin mensaje y Siguiente.

Setting Up Post Installation Message

11. Ahora selecciona la ruta del EXE que te gustaría crear. Aquí también puedes habilitar un par de opciones diferentes. Una vez completado, haz clic en Siguiente.

  • Ocultar animación de progreso de extracción de archivos del usuario – Si tu EXE se ejecuta en segundo plano, mantén esta opción deshabilitada.
  • Almacenar archivos usando nombres de archivo largos dentro del paquete – Para admitir nombres de archivo largos durante el proceso de extracción al ejecutar el EXE. La opción debe dejarse deshabilitada si vas a ejecutar el paquete en Win 95 y vas a utilizar un archivo INF durante la instalación.
Setting Up Target Path And File Name

12. Si deseas que el EXE invoque un reinicio después de que el script esté completo, aquí puedes seleccionar Siempre reiniciar. Después de seleccionar una opción, haz clic en Siguiente.

Choosing Whether To Require A Restart Or Not

13. Ahora selecciona Guardar archivo de directivas de autextracción (SED) y haz clic en Siguiente. Guardar un archivo SED te permite modificar cualquier opción que hayas proporcionado a lo largo de este asistente en un momento posterior. El archivo SED contiene respuestas a todos los valores proporcionados hasta ahora.

Saving Information About The Package Configuration

14. Ahora todo lo que queda es compilar el paquete. Haz clic en Siguiente, y verás un registro del proceso. Para completar la creación del paquete, haz clic en Finalizar, y ya está todo listo.

Requerir Privilegios de Ejecución como Administrador

Si tienes un script que requiere ejecutarse como administrador, IExpress no te da la opción de hacerlo, pero aún es posible.

Antes de ejecutar IExpress, copia el código a continuación y pégalo en la parte superior de tu script. Este fragmento de código verifica si el script se está ejecutando como administrador. Si no lo está, se cerrará y volverá a ejecutar automáticamente el script con privilegios de administrador.

Recuerda que necesitas cambiar el parámetro WindowStyle en la pantalla de Mostrar Ventana según cómo desees mostrar u ocultar la ventana del EXE cuando lo ejecutes.

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
## Prueba si el script se está ejecutando como administrador, si no, ejecútalo nuevamente 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 Ventana: Normal, Minimizado, Maximizado y Oculto

						## ------> EL RESTO DE TU SCRIPT VA AQUÍ <------ ##

        }
        catch{
            exit
        }
    }
    exit
}

ISE Steroids

Si te encanta escribir scripts en el PowerShell ISE, esta herramienta se adapta a tu estilo. ISE Steroids es una extensión del editor PowerShell ISE empaquetada como un módulo de PowerShell que agrega muchas características al ISE.

ISE Steroids tiene muchas características, pero la que te interesa es su capacidad para convertir un script a un archivo EXE, así que vamos a profundizar.

  1. Suponiendo que ya tienes instalado ISE Steroids, abre el PowerShell ISE.

2. En la consola integrada, ejecuta Start-Steroids para ejecutar la extensión y cargar Steroids.

3. Abre o escribe un nuevo script en la ventana del editor. Este tutorial utilizará estos archivos.

4. Haz clic en la opción Herramientas —> Convertir código en EXE tal como se muestra en la captura de pantalla a continuación.

Compiling PS1 to EXE

5. Ahora define todas las opciones que deseas aplicar al archivo EXE resultante en la pequeña ventana, como la que se muestra a continuación. Estas opciones son parámetros, al igual que en PS2EXE, para configurar las propiedades y el comportamiento de tu archivo EXE.

Configuration For The Executable File

6. Una vez que hayas configurado todas las opciones, haz clic en el botón Crear aplicación. ISE Steroids te pedirá que selecciones una ruta de destino. Después de eso, habrás terminado de convertir tu PS1 a un archivo EXE.

Visual Studio Code y PowerShell Pro Tools

Para nuestro próximo editor, te presentamos Visual Studio (VS) Code. VS Code es el reemplazo recomendado por Microsoft para PowerShell ISE y ha sido adoptado por muchos desarrolladores de PowerShell.

Aunque VS Code no tiene una manera nativa de convertir scripts de PowerShell a archivos EXE, aún puedes hacerlo posible con la extensión PowerShell Pro Tools. Junto con la conversión de scripts a EXE, la extensión PowerShell Pro Tools te ayuda a empaquetar scripts, incluye un diseñador de GUI y más.

PowerShell Pro Tools requiere tanto el Pack de Desarrollo .NET 4.6.2 (o posterior) como el .NET Core 1.0 o posterior para empaquetar scripts.

Estás utilizando los scripts Get-LatestAppLog3.ps1 y AppLogsComplete.ps1 para esta demostración.

Suponiendo que tienes instalado VS Code y la extensión PowerShell Pro Tools:

  1. Abre VS Code y un script de PowerShell para convertir a un archivo EXE.

2. En la esquina superior derecha de VS Code, haz clic en el botón Empaquetar Script como Exe como se muestra a continuación.

Compiling PowerShell Script To An EXE

3. Cuando creas un EXE a partir de un script por primera vez, PowerShell Pro Tools creará un archivo package.psd1 en la raíz del espacio de trabajo actual.

Showing Workspace Root and PowerShell Data File (PSD1)

4. Dentro del archivo package.psd1, la ruta exacta del script a convertir se completa automáticamente para la clave Root. Define la clave Ruta de salida para especificar la ruta donde guardar el EXE, como se muestra a continuación.

Setting up Root and Output Path

5. Cuando creas un EXE a partir de un script, notarás varios mensajes de registro en el panel de Salida en la parte inferior de la pantalla. Si surgen errores al compilar el script, los verás mostrados aquí.

Logs Shown In The Output Pane

Compilación de otros scripts en el mismo EXE

Si tienes scripts dependientes llamados en tu script principal, la extensión PowerShell Pro Tools puede encargarse de ellos también. Para hacerlo, PowerShell Pro Tools requiere que puntos cualquier script que desees incluir con el EXE.

El script Get-LatestAppLog3.ps1 a continuación es el script principal para compilar. Dentro de él, se ejecuta el script AppLogsComplete.ps1. Para asegurar que PowerShell Pro Tools incluya el archivo AppLogsComplete.ps1 dependiente, debes incluir el script o traerlo al ámbito del script actual.

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

Una vez que hayas importado cualquier script dependiente, haz clic en el Script del Paquete como Exe nuevamente para comenzar a convertir tus scripts en un archivo ejecutable.

PowerGUI

PowerGUI fue uno de los editores originales de scripts de PowerShell. Aunque parece haber sido olvidado desde hace mucho tiempo, todavía puedes encontrar copias rondando en la web. ¿Por qué hablar de un editor de scripts de PowerShell hace mucho olvidado? ¡Porque tiene un convertidor PS1 a EXE incorporado!

Aunque el sitio web de PowerGUI ya no existe, aún puedes encontrar una copia en sitios como Softpedia.

Compilando Script PS1 a un EXE

Después de instalar PowerGUI, arráncalo, y verás una Página de Inicio. Para comenzar a compilar tus scripts, puedes crear uno nuevo o abrir uno existente desde la barra de herramientas, como se muestra en la captura de pantalla a continuación.

Create a New Script or Open an Existing One

Una vez que estés satisfecho con tu script, haz clic en el menú Herramientas. Luego elige Compilar Script o presiona Ctrl+F9 en tu teclado.

Initiate Compiling Script to EXE

Ahora, configura cómo te gustaría que se ejecute el EXE después de la conversión. La ventana Compilar Script, tal como se muestra a continuación, tiene diferentes opciones entre las que puedes elegir para el comportamiento del EXE.

  1. Haz clic en el botón Examinar y localiza tu PS1 que deseas convertir.

2. PowerGUI admite el Marco de Destino desde Microsoft .NET Framework 3.5 hasta .NET Framework 4.0.

3. Si solo desea que el archivo ejecutable (EXE) se ejecute en segundo plano, desactive la opción Mostrar la ventana de la Consola de PowerShell cuando se ejecuta el script.

4. También puede hacer clic en el botón Dependencias (esquina inferior izquierda) si tiene otros archivos que desea incluir. Por lo general, son otros scripts de PowerShell en los que su script depende.

5. Una vez que esté satisfecho con la configuración, haga clic en Aceptar para comenzar la conversión de su PS1 a EXE.

Configuring Compiled EXE Behavior

Como nota adicional, notará una desventaja con PowerGUI en cuanto al control de cómo desea que se ejecute el EXE. PowerGUI no ofrece muchas opciones, como agregar parámetros.

Además, PowerGUI no le brinda la opción de incrustar información como derechos de autor, versión y descripción, a diferencia de otros generadores de PS1 a EXE. Pero si eso no le molesta demasiado, entonces PowerGUI es un buen hallazgo que puede conservar.

PowerShell Studio

Para concluir nuestra lista de convertidores de PS1 a EXE, terminemos con uno de los entornos de desarrollo integrado (IDE) de PowerShell más completos, PowerShell Studio de Sapien Technologies. Construido desde cero como un IDE exclusivamente para PowerShell, sería un deservicio a PowerShell Studio mostrar solo su capacidad para convertir PS1 a EXE. Sin embargo, solo tenemos una cantidad limitada de espacio.

Al igual que PowerShell Pro Tools en Visual Studio Code, PowerShell Studio también tiene requisitos estrictos para empaquetar scripts; tales como .NET Framework 4.8, .NET 5 para PowerShell 7 y Visual Studio 2015-2019 Runtime

Suponiendo que tienes PowerShell Studio instalado, abre PowerShell Studio y crea o abre un script de PowerShell existente. Este tutorial utilizará el script Get-LatestAppLog3.ps1.

Navegación por la configuración

Antes de convertir un script en PowerShell Studio, primero debes aprender la gran cantidad de formas en que puedes cambiar el comportamiento del EXE resultante.

Haz clic en el botón Package en la esquina superior derecha de la ventana, y elige Settings. Esto abre la ventana Script Packager, donde puedes definir todas las opciones disponibles para ti.

Packaging Script To An Executable File

Cada opción en el Script Packager juega un papel importante en cómo deseas que sea la salida del archivo EXE. Estas opciones se muestran en las siguientes secciones con capturas de pantalla.

Motor de scripts

La sección del Motor de scripts se centra en la plataforma objetivo y el motor de scripts para compilar tu archivo ejecutable.

Comience seleccionando su Objetivo. Puede elegir entre una versión de 32 o 64 bits de Windows, o puede elegir ambas para mayor flexibilidad. PowerShell Studio creará un archivo EXE para cada plataforma que elija aquí.

Setting up Target Platform And PowerShell Scrip Engine

Configuración de salida

Esta sección tiene opciones para configurar cómo resultará el archivo EXE después de compilarlo.

  • Archivo de salida – El nombre del archivo EXE resultante.

No incluya una extensión de archivo (.exe) ya que se establecerá automáticamente para usted en el campo.

  • Carpeta de salida – Donde PowerShell Studio guardará el archivo ejecutable.
  • Resolver e incluir scripts externos – Asegúrese de que esta opción esté marcada si tiene scripts dependientes en su script principal. Si no habilita esto, los scripts externos se ignorarán al compilar su archivo ejecutable.

Asegúrese siempre de que cualquier script dependiente esté en la misma carpeta que el script principal.

  • Firmado – Un lugar donde puede buscar un certificado para firmar el EXE junto con la contraseña del certificado (si la tiene).
Managing The Output Settings For The Executable File

Archivos de icono

Un icono le ayuda a distinguir aplicaciones entre sí, y la sección Archivos de icono le brinda la opción de agregar un icono para su archivo ejecutable.

Para agregar un archivo de icono, haga clic en el botón Agregar archivo o simplemente arrastre y suelte el archivo de icono en la sección Archivos de icono.

Add Icon Files

Restricciones

En la sección de Restricciones, puedes incluir o excluir criterios para permitir la ejecución de archivos EXE.

Marcar un Sistema Operativo en este campo asegurará que el archivo EXE resultante se ejecute únicamente en ese sistema operativo. De manera similar, puedes definir criterios como la necesidad de que un usuario específico esté conectado, que la computadora tenga una dirección MAC específica, y más.

Como puedes ver a continuación, tienes control total sobre cuándo se ejecuta el archivo EXE resultante.

Adding Security Via Execution Restrictions

Información de la Versión

Cuando PowerShell Studio crea un archivo EXE, ese EXE tiene varios atributos de archivo. En la sección de Información de la Versión, puedes definir cómo se ven esos atributos.

Aquí puedes establecer atributos como la Versión del Archivo, Versión del Producto, Derechos de Autor, y más. Puedes ver todos los atributos disponibles a continuación.

Setting File Version Information

Opciones de Compilación

Por último, encontrarás una sección de Opciones de Compilación. En esta sección, puedes agregar comandos personalizados pre-compilación o post-compilación para ejecutar. Esta opción ejecutará comandos de PowerShell antes o después de compilar el script en un archivo ejecutable.

Supongamos que deseas ejecutar algún código justo después de que PowerShell Studio termine de crear el archivo EXE. Para hacerlo, haz clic en el botón Nuevo (Insertar) en la casilla de Comandos post-compilación. Tanto los comandos pre-compilación como post-compilación aceptan comandos de PowerShell directamente.

Alternativamente, puedes hacer clic en el botón Añadir Archivo (puntos suspensivos) y seleccionar otra aplicación o script de PowerShell para ejecutar.

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

Después de configurar todo, haz clic en OK para empaquetar el script en un ejecutable. La ubicación del archivo se abrirá automáticamente para que puedas verificar el archivo ejecutable.

Contabilizando las Dependencias Externas de los Scripts de 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.

Cuando un script contiene una referencia a otro script y ese script se convierte en un EXE, la ruta puede cambiar. Cuando eso sucede, el código de PowerShell dentro del EXE no puede encontrar el script dependiente y falla.

Tal vez tengas un script que te gustaría convertir y que llama a otros scripts en la misma carpeta. Cuando ejecutas el script a través de la consola de PowerShell, puede encontrar estos scripts ya que todos están en el mismo directorio de trabajo. Cuando conviertes un script en un EXE, esto puede romperse.

Si tienes la intención de convertir un PS1 en un EXE y ese script llama a otros scripts en el mismo directorio, agrega el siguiente fragmento de código en la parte superior de tu script.

El fragmento de código a continuación resuelve la ruta de un script externo que estás ejecutando desde el script principal siempre y cuando ambos estén en el mismo directorio.

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

Comparación de Características

Si aún no te has decidido sobre cómo te gustaría crear un EXE a partir de un script de PowerShell, echa un vistazo a la tabla a continuación. Esta tabla proporciona una visión general de las características de cada herramienta para ayudarte a decidir cuál será tu elección de convertidor de PS1 a EXE.

Features Comparison

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