5

自動化されたタスクを実行したい VM があります (つまり、自動化されたタスクは実際の VM で実行されます)。

VM は Windows 2008 サーバーです。

タスク スケジューラにタスクを追加しました。RDP 経由でマシンにログインすると、右クリックして [実行] をクリックしてタスクを実行できます。

ただし、RDP セッションがオフになっている場合 (VM 上のユーザーはまだログインしている場合)、タスクは実行を試みますが、notepad.exe を開くだけで、テキストを書き込みません。

vbs スクリプトは次のとおりです (ここで使用するために単純化されています...)。

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Notepad.exe"
Do Until Success = True
Success = objShell.AppActivate("Notepad")
Wscript.Sleep 1000
Loop
objShell.SendKeys "This is a test."

Windows XP マシンでこのタスクを完全に実行しましたが、何が問題を引き起こしているのか理解できません。

RDP 経由で接続されていない場合、VM にキーボードが見つからないように見えます。RDP 経由で接続すると、MSTSC は VM にキーボードを送信し、タスクを正しく実行できます。

ありがとう、

デビッド

4

1 に答える 1

6

わかった、

だから私はそれを理解したと思います...

問題は、リモート デスクトップでログアウトすると、サーバーがロックされ、スクリプトを実行できなくなることです。ControlSend や ControlClick コマンドなど、さまざまなオプションを試しましたが、成功しませんでした。

解決策は次のとおりです。 次のコマンドでバッチ ファイルを作成し、ロックを解除したままにするワークステーションのデスクトップに保存します。 ファイルに Logoff.bat という名前を付けました。

START C:\Windows\System32\tscon.exe 0 /dest:console
START C:\Windows\System32\tscon.exe 1 /dest:console
START C:\Windows\System32\tscon.exe 2 /dest:console
START C:\Windows\System32\tscon.exe 2 /dest:console
START C:\Windows\System32\tscon.exe 3 /dest:console
START C:\Windows\System32\tscon.exe 4 /dest:console
START C:\Windows\System32\tscon.exe 5 /dest:console

Tscon.exe は、Windows のインストールに標準で付属しており、以前にロックされたコンソールをロック解除したままにするために特別に作成されています。次のリンクを参照してください: http://support.microsoft.com/kb/302801

次にリモートデスクトップでワークステーションにログインするときは、通常の方法でログアウトせず、バッチファイルを実行します-私の場合は「Logoff.bat」これにより、リモートデスクトップ接続が終了し、ログアウトされますが、その後誰かが実際にログインしているかのようにスクリプトを実行するために、ロック解除された状態を続けます。

于 2013-04-22T15:11:20.527 に答える