cbli
Goto Top

VB Script zur Statusabfrage eines hochfahrenden PCs

Grundsätzliches:


Mein Vater möchte von zu Hause per VPN und Remote Desktop auf seinen PC in der Firma zugreifen. Dieses habe ich mit einem VB Script realisiert.
Der PC zuhause und in der Firma haben Windows XP Prof. mit SP3 installiert.


Was bereits funktioniert:


Das Script stellt automatisch die VPN Verbindung her,fährt den PC in der Firma per Wake on Lan hoch und startet dann automatisch Remote Desktop.
Er kann sich dann anmelden und später trennt das Script die Verbindung und fährt auch vorher auf Wunsch den PC in der Firma herunter.


Was nicht funktioniert:

Obiges funktioniert nur wenn der PC in der Firma bereits hochgefahren ist. Wird er erst mit Hilfe des Scripts hochgefahren (was funktioniert) ,kommt gleich der
Remote Desktop Befehl,der natürlich fehlschlägt weil der PC in der kurzen Zeit noch nicht hochgefahren ist.
Ich habe mir seither mit dem WScript.Sleep Befehl geholfen,aber ich möchte es eigentlich so lösen,daß irgendwie der "Hochfahrstatus" des Remote PC´s abgefragt wird.
Erst wenn der Remote PC bis zum Anmeldebildschirm hochgefahren ist ,soll das Script den Remote Desktop Befehl starten.

Lässt sich das irgendwie realisieren ?

Hier noch mein momentanes Script:

Dim rdpdatei
rdpdatei = "192.168.115.93"
msgbox "Es wird nun die VPN Verbindung hergestellt",64,"Hinweis"
Set WSHShell = CreateObject("WScript.Shell")


' VPN Verbindung herstellen
wshshell.run "rasphone -d VPN-Office",,true


' Ping Befehl
strComputer = "Rolf"

Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& strComputer & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then
WScript.Echo "PC " & strComputer & " ist nicht online." & vbcrlf & vbcrlf & "Der PC wird jetzt gestartet....." & vbcrlf & vbcrlf & "Bitte etwas Geduld - Remote Desktop startet automatisch sobald der PC hochgefahren ist"


' Externes WOL Programm mit MAC Adresse starten
wshshell.run "d:\mc-wol (MAC) /a (Broadcast IP)", 1, true ' Rolf MaC


else
msgbox "PC ist bereits Online !!",64,"Hinweis"
End If
Next

' Remote Desktop wird gestartet
wshshell.run "%systemroot%\system32\mstsc.exe /console /w:1280 /h:1024 /V:" & rdpdatei

' Schleife die auf Beendigung des MSTSC Prozesses abfragt
Do

strComputer = "."
strProcess = "mstsc.exe"
strProgPath = "%SystemRoot%\system32\mstsc.exe"

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & strProcess & "'")

Loop until colProcesses.Count = 0 ' Prozess läuft nicht mehr - Schleifenabruch


' Vebindung trennen und Remote PC herunterfahren
value = msgbox ("Soll der PC im Büro heruntergefahren werden, bevor die Verbindung getrennt wird ?",32 + vbYesNo,"Frage")

if value = vbyes then

Dim objShell, strComputer, strInput
Dim strShutdown
strComputer = "Rolf"

strShutdown = "shutdown -s -t 0 -f -m \\" & strComputer
set objShell = CreateObject("WScript.Shell")
objShell.Run strShutdown


msgbox "Verbindung wird jetzt getrennt",64,"Hinweis"
wshshell.run "rasphone -h VPN-Office"

end if

if value = vbno then
msgbox "Verbindung wird jetzt getrennt",64,"Hinweis"
wshshell.run "rasphone -h VPN-Office"
end if

Content-Key: 154986

Url: https://administrator.de/contentid/154986

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: ShitzOvran
ShitzOvran 12.11.2010 um 16:50:12 Uhr
Goto Top
und was ist, wenn du den rechner einfach solange anpingst, bis er eine erfolgreiche rückmeldung gibt... dann weißt du er ist bereit, und führt das screipt weiter aus
Mitglied: cbli
cbli 12.11.2010 um 16:53:00 Uhr
Goto Top
Funktioniert nicht,da der Rechner ja schon kurz nach dem Einschalten auf den Ping Befehl reagiert,also lange bevor das OS hochgefahren ist.