• 締切済み

リモートデスクトップ接続がアクティブにならない

職場でWindows Server 2019を利用しています。 メインとなるサーバAからサーバB、C、D…と複数台のサーバにリモートデスクトップする操作があり、バッチファイルで各サーバに接続させるような形で操作しています。 普通にアプリ一覧からリモートデスクトップ接続をするときはもちろん普通に接続できますが、バッチによる接続だとリモートデスクトップがアクティブとならずタスクバーのアイコンが点滅している状態となってしまい、手動でアクティブ表示にする必要がありました。 面倒だったのでスクリプトを作成してリモートデスクトップ接続を最小化→最大化→アクティブ化の順に操作することでアクティブになって表示されるようになりました。 ところが画面上にはアクティブとなったサーバBが表示されているのですが、サーバBでなにも操作しない状態でWindows+Eキーでエクスプローラを表示させると接続元のサーバAの内容が表示されてしまいます。 明確に接続先を操作してからでないと接続元の制御が残ってしまっているような状態です。 もちろんなにか操作をしてからにすればいいのでしょうが、気持ち悪い状態なので解決方法があればと思い、質問しました。 以下スクリプト部分です。バッチファイルはスクリプトファイルを呼び出すだけなので割愛します。なおActiveDirectoryは構成されておらずWorkgroup環境になります。 よろしくお願いします。 set ws = createobject("wscript.shell") set cs = createobject("wbemscripting.swbemlocator").connectserver '実行前MSTSCプロセスの取得(差分でpidを特定するため) set proclist = cs.execquery("select * from win32_process where caption = 'mstsc.exe'") old_cnt = proclist.count redim procid(old_cnt) i = 0 for each proc in proclist procid(i) = proc.processid next sv = "サーバA" ws.run "cmd /c start mstsc /v:" & sv, 1, false wscript.sleep 2000 '実行後MSTSCプロセスの取得 set proclist = cs.execquery("select * from win32_process where caption = 'mstsc.exe'") i = 0 for each proc in proclist old_id = 0 for i = 0 to old_cnt if proc.processid = procid(i) then old_id = 1 end if next if old_id = 0 then new_id = proc.processid end if next '最終的に確定したpidを操作 ws.appactivate new_id ws.sendkeys "%n" ws.sendkeys "%x" ws.appactivate new_id

みんなの回答

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

パソコンの名前が同じものが有るのかも知れません。

関連するQ&A