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.
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.
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.
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.
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.
Install-Module -Name ps2exeSet-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.
El comando básico nombra un script de entrada y un archivo de salida:
Invoke-PS2EXE -inputFile ".\DiskCleanup.ps1" -outputFile ".\DiskCleanup.exe"ps2exe acepta los mismos parámetros-noConsole si el script muestra una ventana o formulario y no desea una ventana de consola negra detrás de él.-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.-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.
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:
.ps1. El EXE es sólo un resultado de compilación; cada edición futura comienza desde el guiónMire 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 VideoNecesita 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.
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.
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.