2013-04-19 34 views
5

Possiedo una macchina virtuale su cui desidero eseguire un'attività automatizzata (ad esempio, l'attività automatica viene eseguita sulla macchina virtuale effettiva).Impossibile inviare chiavi automatiche quando non è disponibile alcun RDP

La VM è un server Windows 2008.

Ho aggiunto l'attività all'utilità di pianificazione e quando sono connesso alla macchina tramite RDP, posso eseguire l'operazione facendo clic con il pulsante destro del mouse, Esegui.

Tuttavia, quando la sessione RDP è disattivata (ma l'utente sul VM è ancora connesso) l'attività viene eseguita, ma apre solo notepad.exe, ma non scrive il testo.

Lo script vbs è il seguente (semplificato per il nostro uso qui ...);

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." 

Ho questo compito perfettamente funzionante su una macchina Windows XP e non riesco a capire che cosa sta causando il problema.

Sembra che non ci sia alcuna tastiera trovata sulla VM quando non è connessa tramite RDP. Una volta connesso tramite RDP, MSTSC invia la VM alla mia tastiera e può quindi eseguire correttamente l'attività.

Grazie,

David

risposta

4

OK,

Quindi penso ho capito ...

Il problema è che una volta che si accede con desktop remoto, il server è bloccato e nessun script può essere eseguito. Ho provato varie opzioni, inclusi i comandi ControlSend e ControlClick, ma senza alcun successo.

La soluzione è la seguente: Creare un file batch con i seguenti comandi e salvarlo sul desktop della stazione di lavoro che si desidera tenere sbloccato: Ho chiamato il mio file 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 viene fornito di serie con l'installazione di Windows ed è stato appositamente creato per lasciare sbloccata una console bloccata in precedenza. Vedi questo link: http://support.microsoft.com/kb/302801

La prossima volta che si accede alla workstation con desktop remoto, non disconnettersi modo normale, ma si eseguire file batch - nel mio caso "Logoff.bat" Questo sospendere l' Connessione desktop remoto e disconnettersi, ma continuerà in uno stato sbloccato per l'esecuzione di qualsiasi script come se qualcuno fosse effettivamente connesso.

+0

grazie. Mi hai salvato la giornata. –