Technical Anshu
Tutorials Blog
Guía de PowerShell a EXE

Convierta un script de PowerShell a EXE Guía completa con PS2EXE

Escribiste un script que soluciona un problema en diez segundos, pero las personas que lo necesitan no abrirán PowerShell, no cambiarán una política de ejecución y no ejecutarán un archivo de texto. Conviértalo en un EXE en el que puedan hacer doble clic. Aquí está la conversión completa, bien hecha, con sus límites establecidos claramente.

By Technical AnshuWindows 10 / 116 minute read
Mire el vídeo para ver el script convertido y ejecutado en pantalla, paso a paso

Cada administrador de Windows tiene una carpeta de pequeños scripts brillantes que nadie más puede usar. El guión está bien; El embalaje es el problema. Un archivo .ps1 se abre en el Bloc de notas cuando se hace doble clic, activa advertencias de políticas cuando se ejecuta y parece un virus para un usuario sin conocimientos técnicos. Convertirlo a un EXE con el módulo gratuito PS2EXE repara el paquete en aproximadamente un minuto. Esta página contiene todo el trabajo en orden: qué hace realmente la conversión, la instalación, el comando, las opciones importantes y las pruebas que lo mantienen honesto.

Windows PowerShell - converting a script
PS C:\Scripts> Install-Module -Name ps2exe PS C:\Scripts> Invoke-PS2EXE -inputFile ".\DiskCleanup.ps1" -outputFile ".\DiskCleanup.exe" PS C:\Scripts> .\DiskCleanup.exe
La conversión completa en tres líneas: instale el módulo PS2EXE gratuito una vez, convierta y ejecute. La salida del comando que se muestra es un ejemplo.
1

¿Qué hace realmente la conversión?

Un script de PowerShell es un archivo de texto. Necesita PowerShell para abrirlo, la política de ejecución adecuada para ejecutarlo y un usuario que no tenga miedo de una ventana azul llena de texto. Un EXE convertido elimina las tres fricciones: el usuario hace doble clic en un archivo, exactamente como cualquier otro programa.

Sea claro acerca de lo que hace la herramienta bajo el capó. PS2EXE, el módulo gratuito que utiliza esta guía, envuelve su script dentro de un pequeño programa .NET. El texto del script viaja dentro del EXE en forma codificada y, cuando el EXE se ejecuta, entrega ese script al motor PowerShell integrado en Windows. Nada se compila en código de máquina y el script no se convierte en un secreto; una página posterior de este conjunto cubre ese límite en su totalidad.

Ese envoltorio sigue siendo realmente útil. Es la diferencia entre enviarle a un colega un archivo de texto con seis instrucciones y enviarle un botón que simplemente funciona.

2

Paso 1: prueba la PS1 hasta que se aburra

Nunca convierta un script no probado. El EXE oculta la consola y el flujo de errores de manera que la depuración sea lenta, por lo que cada error debe encontrarse mientras el script sigue siendo un .ps1 simple.

  1. Ejecute el script como usuario normal y como administrador.
  2. Ejecútelo en una máquina que no sea la suya, si puede; las rutas y las unidades difieren
  3. Déle la información incorrecta una vez, a propósito, y observe lo que hace.
  4. Sólo cuando se comporte de la misma manera cada vez, conviértalo
3

Paso 2: instale el módulo PS2EXE una vez

PS2EXE está publicado en la Galería PowerShell por su autor, Markus Scholtes, y es gratuito. Lo instalas una vez en tu propia PC; las personas que reciben el EXE no instalan nada.

  1. Abra PowerShell y ejecute Install-Module -Name ps2exe
  2. La primera vez, PowerShell puede pedirle que confíe en el repositorio de PSGallery. Responda Sí si inició la instalación usted mismo.
  3. Si las instalaciones del módulo están bloqueadas, permítalas para su propia sesión con Set-ExecutionPolicy -Scope CurrentUser RemoteSigned y comprenda que está cambiando una configuración de seguridad solo en su propia cuenta.

También hay una interfaz gráfica, Win-PS2EXE, que muestra cada opción como casillas de verificación y campos. Produce exactamente el mismo EXE que la línea de comando; use el que le resulte más claro.

4

Paso 3: ejecute la conversión

El comando básico nombra un script de entrada y un archivo de salida:

  1. Invoke-PS2EXE -inputFile ".\DiskCleanup.ps1" -outputFile ".\DiskCleanup.exe"
  2. El alias más corto ps2exe acepta los mismos parámetros
  3. Agregue -noConsole si el script muestra una ventana o formulario y no desea una ventana de consola negra detrás de él.
  4. Agregue -requireAdmin si el script cambia la configuración del sistema, de modo que Windows solicite elevación al iniciarse en lugar de que el script falle a mitad de camino.
  5. Agregue -iconFile ".\tool.ico" más -title, -product, -company y -version si el archivo se compartirá; estos llenan la pestaña Detalles de las propiedades del archivo.

El vídeo vinculado en esta página recorre la conversión en pantalla; Las opciones anteriores son las mismas que utiliza y el resto de esta guía explica cada una de ellas en profundidad.

5

Paso 4: prueba el EXE como un extraño

Un EXE convertido es un programa nuevo en lo que respecta a Windows. Pruébelo de la forma en que lo encontrará su usuario real:

  1. Cópielo a una carpeta diferente y ejecútelo haciendo doble clic, no desde su ventana de PowerShell
  2. Ejecútelo primero sin derechos de administrador, incluso si lo creó para tareas administrativas, para ver el error honestamente.
  3. Esté atento a las reacciones del antivirus y SmartScreen y corríjalas adecuadamente: hay una página completa sobre eso en este conjunto
  4. Mantenga la fuente .ps1. El EXE es sólo un resultado de compilación; cada edición futura comienza desde el guión
Los dos límites honestos de toda herramienta de script a EXE: la fuente dentro del EXE puede ser leída por cualquier persona lo suficientemente determinada, así que nunca oculte una contraseña en un script convertido; y un archivo EXE nuevo sin firmar a menudo preocupa al software antivirus hasta que gana reputación o se firma. Ambos temas tienen sus propias guías completas en este conjunto.

Mira el proceso completo en el vídeo

Mire la conversión completa en el video: instalación del módulo, la GUI y las rutas de comando, y el EXE terminado en ejecución.

Watch Full Video
Preguntas frecuentes

¿La PC de destino necesita tener instalado PowerShell para ejecutar el EXE convertido?

Necesita el motor PowerShell que se incluye dentro del propio Windows, que Windows 10 y 11 incluyen de forma predeterminada. El usuario no instala nada y nunca abre PowerShell: el EXE inicia el motor en segundo plano y le entrega su script.

¿El EXE convertido es un programa compilado real?

No en el sentido C o C agudo. PS2EXE envuelve el texto del script, codificado, dentro de un pequeño programa host .NET. Cuando se ejecuta el EXE, el host envía su script al motor de Windows PowerShell. El comportamiento es idéntico a ejecutar .ps1: el paquete es lo que cambia.

¿Puedo convertir un script gratis o PS2EXE es de pago?

PS2EXE es gratis. Es un módulo comunitario publicado en la Galería PowerShell por Markus Scholtes, instalado con Install-Module -Name ps2exe. Existen empaquetadores comerciales, pero para el trabajo de conversión estándar, el módulo gratuito es la herramienta utilizada en el vídeo y en esta guía.

Esta guía se basa en el vídeo Anshu técnico de PowerShell a EXE: ¿estás atascado en algún paso? Pregunta en los comentarios del vídeo y allí recibirás respuesta.