アクションをトリガーするプロンプトをリモート デスクトップに送信する方法

アクションをトリガーするプロンプトをリモート デスクトップに送信する方法

私たちのオフィス環境には仮想マシン (Azure 経由) があります。この VM で Python スクリプトを実行し、取得したデータを分析します。

チームには 5 人がいますが、誰かが VM にいるときに他の 1 人が参加すると、すでに参加していた人が退出させられます。

はいまたはいいえボタンを使用して、誰かがオンラインになっているかどうかを尋ねる VM のプロンプトをプッシュする方法はありますか? 現在、バッチ ファイルに次のコードがあります:

@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

これは明らかに、使用しているコンピューターでのみ機能します。これを VM にプッシュして、誰かが「はい」を押しても何も起こらないようにする方法を見つけたいと思っていました。誰かが「いいえ」を押した場合、または誰も応答しない時間遅延がある場合 (VM に誰もいないため)、VM に自動的にログインする別のバッチ ファイルを実行します。これは実行可能ですか?

これまで、VM には cmd または PowerShell がプリインストールされているため、これらでソリューションを探してきましたが、当社のチームはさまざまな形式のコードを使用した経験があるため、機能する他の形式も試してみたいと考えています。

Msg私たちには機能していませんNet Send。Windows 10 を使用しています。

ありがとう、

マンモス

答え1

表示されているコードは .bat/.cmd ファイルであり、PowerShell スクリプトではありません。PowerShell では、バッチ ファイルに頼ることなくダイアログ ボックスやメッセージ ボックスを表示できます。

Net Send は OS ツールなので、マシンまたはユーザーに対してこれを実行できますが、何を使用するかを指示する必要があります。

Net Send 呼び出しで Net Send パラメータを使用していることが示されていません。また、ターゲットがユーザーと同じフォレスト/ドメイン内にあるかどうかも示されていません。

同じドメインにない以下のユーザー/コンピューターにメッセージを送信することはできません。コンピューターと名前は解決可能である必要があります。

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 ]

代わりにmsg.exeを使うこともできます

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

PowerShell を使用したい場合は、そのトピックに関する記事が多数あります。

ネットワーク コンピュータにメッセージを送信する PowerShell スクリプト

PowerShell を使用してリモート コンピューターにポップアップ メッセージを表示する方法

jdhitsolutions/Send-PopupMessage.ps1

関連情報