No se muestra el cuadro de diálogo MessageBox cuando se ejecuta un script de PowerShell a través de la línea de comandos (Command Prompt).
Estoy tratando de obtener un cuadro de diálogo MessageBox llamado desde una clase utilizando el siguiente código
Add-Type -Assembly PresentationFramework
[System.Windows.MessageBox]::Show('MessageBox está fuera de la clase')
Class TestClass {
TestClass(){
[System.Windows.MessageBox]::Show('MessageBox está desde la clase')
}
}
$null = [TestClass]::new()
Se muestran dos cuadros de diálogo cuando uso PowerShell ISE, sin embargo, obtengo un error cuando ejecuto el script de PowerShell a través de cmd
>powershell.exe -file ClassTest.ps1
Error en D:\ClassTest.ps1:7 carácter:10
+ [System.Windows.MessageBox]::Show('MessageBox está desde la ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
No se puede encontrar el tipo [System.Windows.MessageBox].
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TypeNotFound
¿Cómo puedo obtener correctamente un cuadro de diálogo MessageBox?
P.D. Win10, Powershell 5.1.19041.1320
davy.ai
El error sugiere que la clase [System.Windows.MessageBox] no se puede encontrar en la sesión de PowerShell que se abre a través de CMD.
Para resolver este problema, puedes agregar la bandera -STA a la línea de comando de PowerShell o envolver tu código en un hilo de PowerShell WPF.
Ambas soluciones asegurarán que la clase [System.Windows.MessageBox] se cargue correctamente en la sesión de PowerShell, y las cajas de mensaje se mostrarán como se esperaba.