Contenidos
- Importante
- Crear y guardar el código que crea un formulario en PowerShell
- Descargar e instalar PS2EXE (aplicación que convierte de PS1 a EXE) siendo administrador de PowerShell
- Ejecutar PS2EXE
- Resultado de la ejecución de PS2EXE
- Resultado de ejecutar el EXE resultante
- Errores que pueden dar si no se importan los ensamblados correctamente
Importante
Importar los ensamblados correctamente.
1 2 |
Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing |
Crear y guardar el código que crea un formulario en PowerShell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing #Crear un formulario, añadir una etiqueta, dos botones y una caja de texto #Funcionalidad para el formulario: #Pulsar la tecla Enter almacena en una variable el contenido de la caja de texto y se muestra #Pulsar la tecla Escape sale del formulario #Formulario $Form = New-Object System.Windows.Forms.Form $Form.Text="Formulario" $Form.Size=New-Object System.Drawing.Size(500,500) $Form.StartPosition="CenterScreen" #Etiqueta $Label=New-Object System.Windows.Forms.Label $Label.Text="Etiqueta de ejemplo" $Label.AutoSize=$True $Label.Location=New-Object System.Drawing.Size(160,160) #Caja de texto $TextBox = New-Object System.Windows.Forms.TextBox $TextBox.Location = New-Object System.Drawing.Size(100,180) $TextBox.Size = New-Object System.Drawing.Size(260,20) #Botón1 $Button1=New-Object System.Windows.Forms.Button $Button1.Size=New-Object System.Drawing.Size(75,23) $Button1.Text="Botón OK" $Button1.Location=New-Object System.Drawing.Size(120,220) #Botón2 $Button2=New-Object System.Windows.Forms.Button $Button2.Size=New-Object System.Drawing.Size(75,23) $Button2.Text="Botón Cancelar" $Button2.Location=New-Object System.Drawing.Size(220,220) #Funcionalidad para el formulario: #Pulsar la tecla Enter almacena en una variable el contenido de la caja de texto y se muestra #Pulsar la tecla Escape sale del formulario $Form.KeyPreview = $True $Form.Add_KeyDown({if ($_.KeyCode -eq "Enter"){$Var=$TextBox.Text;Write-Host $Var;$Form.Close()}}) $Form.Add_KeyDown({if ($_.KeyCode -eq "Escape"){$Form.Close()}}) #Funcionalidad para el botón: #Pulsar Enter almacena en una variable el contenido de la caja de texto y se muestra #Pulsar Escape sale del formulario $Button1.Add_Click({$Var=$TextBox.Text;Write-Host $Var}) $Button2.Add_Click({$Form.Close()}) #Añadir etiqueta $Form.Controls.Add($Label) #Añadir botones $Form.Controls.Add($Button1) $Form.Controls.Add($Button2) #Añadir caja de texto $Form.Controls.Add($TextBox) $Form.ShowDialog() |
Descargar e instalar PS2EXE (aplicación que convierte de PS1 a EXE) siendo administrador de PowerShell
1 |
Install-Module ps2exe |
Ejecutar PS2EXE
1 |
Invoke-ps2exe .\source.ps1 .\target.exe |
Resultado de la ejecución de PS2EXE
Resultado de ejecutar el EXE resultante
Errores que pueden dar si no se importan los ensamblados correctamente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
.\formulario.exe : ERROR: No se encuentra el tipo [System.Windows.Forms.Form]. Compruebe que est cargado el ensamblado que lo contiene. En línea: 1 Carácter: 1 + .\formulario.exe + ~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (ERROR: No se en...ue lo contiene.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError ERROR: La propiedad 'Text' no se encuentra en este objeto. Compruebe que la propiedad existe y se puede establecer. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: La propiedad 'StartPosition' no se encuentra en este objeto. Compruebe que la propiedad existe y se puede establecer. ERROR: No se encuentra el tipo [System.Windows.Forms.Label]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: La propiedad 'Text' no se encuentra en este objeto. Compruebe que la propiedad existe y se puede establecer. ERROR: La propiedad 'AutoSize' no se encuentra en este objeto. Compruebe que la propiedad existe y se puede establecer. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: No se encuentra el tipo [System.Windows.Forms.TextBox]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: No se encuentra el tipo [System.Windows.Forms.Button]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: La propiedad 'Text' no se encuentra en este objeto. Compruebe que la propiedad existe y se puede establecer. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: No se encuentra el tipo [System.Windows.Forms.Button]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: La propiedad 'Text' no se encuentra en este objeto. Compruebe que la propiedad existe y se puede establecer. ERROR: No se encuentra el tipo [System.Drawing.Size]. Compruebe que est cargado el ensamblado que lo contiene. ERROR: La propiedad 'KeyPreview' no se encuentra en este objeto. Compruebe que la propiedad existe y se puede establecer. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. ERROR: No se puede llamar a un m‚todo en una expresi¢n con valor NULL. |