Cómo enviar un mensaje a un escritorio remoto que desencadena una acción

Cómo enviar un mensaje a un escritorio remoto que desencadena una acción

Disponemos de una máquina virtual (a través de Azure) en nuestro entorno de oficina. En esta VM ejecutamos scripts de Python para analizar los datos que extraemos.

Somos cinco en el equipo, y cada vez que uno de nosotros continúa mientras alguien más está en la VM, la persona que ya está es expulsada.

¿Hay alguna manera de enviar un mensaje a la máquina virtual que pregunte si hay alguien conectado, con los botones Sí o No? Actualmente tengo este código en un archivo por lotes:

@echo off

echo code=Msgbox("Is someone one the VM?", vbYesNo, "VM?") > "%temp%\popupBox.vbs"
echo WScript.Quit code >> "%temp%\popupBox.vbs"
cscript /nologo "%temp%\popupBox.vbs"

if %errorlevel%==7 call :cancel_tag
if %errorlevel%==6 call :ok_tag
exit /b 1

:ok_tag
echo Yes I am!
exit /b

:cancel_tag
echo No!
exit /b

Obviamente, esto solo funciona en la computadora que estás usando. Esperaba encontrar una manera de insertar esto en la VM y si alguien presiona "Sí", no sucede nada. Si alguien presiona 'No' o hay un retraso en el que nadie responde (ya que no hay nadie en la VM), se ejecutará otro archivo por lotes que tenemos y que inicia sesión automáticamente en la VM. ¿Es esto factible?

Hasta ahora hemos intentado buscar soluciones en cmd o PowerShell ya que la máquina virtual las tiene preinstaladas, pero nuestro equipo tiene experiencia en el uso de diferentes formas de código, por lo que estaría dispuesto a probar otras formas que funcionaran.

Msgy Net Sendno nos funciona. Estamos usando Windows 10.

Gracias,

Mamut

Respuesta1

El código que muestra es un archivo .bat/.cmd, no un script de PowerShell. PowerShell, puede abrir cuadros de diálogo/mensaje sin tener que recurrir a archivos por lotes.

Net Send, al ser una herramienta del sistema operativo, puede hacer esto en la máquina o en el usuario, pero debe decirle qué usar.

No demuestra que está utilizando ninguno de los parámetros de envío de red en su llamada de envío de red. Tampoco está diciendo si el objetivo está en el mismo bosque/dominio que el usuario.

No puede enviar un mensaje a un usuario/computadora utilizando lo siguiente que no esté en el mismo dominio. Las computadoras y los nombres deben poder resolverse.

net send
The syntax of this command is:

NET
    [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
      HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
      STATISTICS | STOP | TIME | USE | USER | VIEW ]

Podrías usar msg.exe en su lugar

msg
Send a message to a user.

MSG {username | sessionname | sessionid | @filename | *}
    [/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]

  username            Identifies the specified username.
  sessionname         The name of the session.
  sessionid           The ID of the session.
  @filename           Identifies a file containing a list of usernames,
                      sessionnames, and sessionids to send the message to.
  *                   Send message to all sessions on specified server.
  /SERVER:servername  server to contact (default is current).
  /TIME:seconds       Time delay to wait for receiver to acknowledge msg.
  /V                  Display information about actions being performed.
  /W                  Wait for response from user, useful with /V.
  message             Message to send.  If none specified, prompts for it
                      or reads from stdin.

msg SomeDomainUserName /server:SomeDomainHostname message logoff

Si desea utilizar PowerShell, puede hacerlo; hay muchos artículos sobre ese tema.

Script de PowerShell para enviar mensajes a computadoras en red

Cómo mostrar un mensaje emergente en una computadora remota usando powershell

jdhitsolutions/Send-PopupMessage.ps1

información relacionada