Así que, si intentas obtener una notificación rápida o un mensaje emergente en tu equipo Windows (ya sea una alerta de script, un recordatorio o simplemente para molestar a alguien, no es que yo lo haga, claro), PowerShell te cubre las espaldas. Es un poco raro, pero puedes usarlo para acceder a diálogos modales sencillos o notificaciones emergentes sin necesidad de una aplicación sofisticada de terceros. Dicho esto, no es infalible: a veces, estas ventanas emergentes se comportan de forma diferente según la versión de Windows, los permisos o si ciertos componentes están habilitados. En algunas configuraciones, el mensaje podría no mostrarse o bloquearse inesperadamente. Aun así, vale la pena intentarlo, ya que está integrado, y en un equipo funcionó perfectamente, en otro…no tanto. Porque, claro, Windows tiene que hacerlo más difícil de lo necesario.
Cómo mostrar mensajes emergentes o de notificación en Windows con PowerShell
Mostrar una ventana emergente básica con Wscript
Si prefiere mantener el cuadro de alerta modal clásico que permanece en pantalla hasta que se descarta, el objeto de shell Wscript es muy sencillo. Está prácticamente integrado en Windows y funciona bien para notificaciones sencillas. Para ello, ejecute lo siguiente en PowerShell:
$wshell = New-Object -ComObject Wscript. Shell $output = $wshell. Popup("The report generation script is successfully completed!")
Esto abre un cuadro con un botón «Aceptar» que detiene la ejecución del script hasta que haga clic. Ideal para advertencias o alertas simples. Si prefiere un mensaje con opciones de Sí/No (ideal para solicitar permisos o confirmaciones), pruebe:
$Output = $wshell. Popup("The script completed successfully. Do you want to view a report?", 0, "Report Status", 4 + 32)
Aquí, el segundo parámetro (0) significa que permanecerá abierto hasta que se haga clic, y los indicadores de tipo combinan botones e iconos. Por ejemplo, 4+32 significa «Sí/No» con un icono de pregunta. Cuando el usuario pulsa «Sí», el comando devuelve 6; si pulsa «No», devuelve 7. Se pueden gestionar respuestas como:
switch ($Output) { 7 { $wshell. Popup('Pressed No') } 6 { $wshell. Popup('Pressed Yes') } default { $wshell. Popup('Invalid input or timeout') } }
Cosas adicionales con las que a veces he tenido que hacer ajustes: asegúrese de ejecutar PowerShell como administrador si el script se niega a ejecutarse, especialmente en máquinas bloqueadas.
Envío de notificaciones de Toast mediante el módulo BurntToast
Para algo más atractivo, como la notificación flotante cerca del reloj, la notificación Toast integrada es la mejor opción. Es un poco más moderna y menos intrusiva. Pero una advertencia: suele requerir un módulo externo llamado BurntToast. Para instalarlo, simplemente haz lo siguiente:
Install-Module -Name BurntToast -Force -Scope CurrentUser
Una vez instalado, podrás enviar notificaciones como ésta:
New-BurntToastNotification -Text "Wi-Fi network disconnection", "Since your device was connected to a high-speed Ethernet LAN, you have been disconnected from your Wi-Fi network" -AppLogo C:\PS\changenetwork.png
Esto crea un pequeño banner emergente que desaparece automáticamente después de unos segundos. Es muy útil para alertas que no deberían bloquear el flujo de trabajo. El argumento del icono es opcional, pero le da un toque elegante. Mejor que el aburrido valor predeterminado, en mi opinión.
Mensajes emergentes en máquinas remotas
¿Ampliar esto a PC remotas? Sí, también puedes hacerlo con algunos comandos integrados, si tienes los permisos adecuados. Usa qwinsta para listar las sesiones activas en la máquina remota:
qwinsta /server:RemotePCName
Una vez que encuentre el ID de la sesión, puede enviar un mensaje con:
MSG username /SERVER:RemotePCName "This is a message from your friendly neighborhood admin."
Si deseas enviar un mensaje a todos los que hayan iniciado sesión, intercambia usernamecon *:
MSG * /SERVER:RemotePCName "The server will restart in 10 minutes. Save your work."
Para notificaciones más gráficas, a menos que ejecutes un script personalizado sofisticado, probablemente necesites implementar scripts de PowerShell personalizados como RemoteSendToasNotification.ps1 (de GitHub).Recuerda que WinRM (Administración remota de Windows) debe estar habilitado y configurado en el equipo de destino, lo cual no siempre es sencillo.
Todo esto, en teoría, hace que las notificaciones por script en Windows sean…bastante divertidas. En la práctica, es cuestión de prueba y error: a veces funciona, a veces no. Pero si intentas alertarte a ti mismo o a otros sin tener que hacer clic manualmente, estos métodos son sorprendentemente buenos.