SMS Remote Control temporär aktivieren

In vielen SMS 2003 Implementationen wird SMS Remote Control generell nicht mehr auf Windows XP Clients aktiviert.
Dennoch sind die Tools oftmals hilfreich, z.B. wenn Remote Desktop oder Remote Assistance mal ihren Dienst versagen oder es erforderlich ist, dass man sich während der Unterstützung eines Benutzers von einer Session ab- und wieder anmelden muss.
Hier würde es helfen, Remote Control temporär auf einem Client aktivieren zu können. Da auf dem Advanced Client alle Komponenten installiert sind und nur per Policy aktiviert werden müssen, ist das mit einer lokalen Policy recht einfach zu realisieren:
Mit dem unten angehängten Skript wird nach Eingabe des Computernamens, den das Skript abfragt, zunächst die lokale Policy gesetzt, die Aktivierung der Komponenten abgewartet und dann die Remote-Session gestartet. Hierzu wird remote.exe aus dem Ordner C:SMSADMIN gestartet. Das Skript muss also angepasst werden, wenn die Admin-Konsole nicht im Standard-Ordner installiert wurde, oder das Skript direkt am Site-Server verwendet wird. Nach dem Schließen der Remote Tool Fensters wird die lokale Policy wieder entfernt und damit der ursprüngliche Zustand mit deaktivierten Remote Tools wieder hergestellt.

EnableRC.vbs


‘******************************************************************************
‘***
‘*** Script: EnableRC.vbs
‘***
‘*** What it does: (1) Creates a local policy to enable Remote Tools
‘*** (2) Starts the Remote Tools console
‘*** (3) Removes the local policy to disable Remote Tools
‘***
‘*** Author: Thorsten Lau, 08.03.2007
‘*** Ingenieurbüro Thorsten Lau - IT-Lösungen
‘*** http://www.Thorsten-Lau.de
‘***
‘******************************************************************************
on error resume next
strComputer = “”
strComputer = CStr(InputBox(”Bitte den Computernamen eingeben, auf dem die Remote-Tools aktiviert und gestartet werden sollen:”, “Enable RC”))
If strComputer = “” Then WScript.Quit(0)
‘******************************************************************************
‘*** Create a local policy to enable Remote Tools
‘******************************************************************************
Set objWMIDefault = GetObject(”winmgmts:” & strComputer & “rootcimv2″)
Set objWMICCMPol = GetObject(”winmgmts:” & strComputer & “rootccmpolicymachinerequestedconfig”)
Set objClassRCCfg = objWMICCMPol.Get(”CCM_RemoteToolsConfig”)
Set objNewInstance = objClassRCCfg.SpawnInstance_()
objNewInstance.Qualifiers_.Add “CCM_Policy_PartialPolicy”, “TRUE”
objNewInstance.Properties_.Item(”Type”) = “1″
objNewInstance.Properties_.Item(”PolicyID”) = “{local}”
objNewInstance.Properties_.Item(”PolicySource”) = “local”
objNewInstance.Properties_.Item(”PolicyVersion”) = “1.00″
objNewInstance.Properties_.Item(”RemoteToolsEnabled”) = “True”
objNewInstance.Properties_.Item(”RemoteToolsEnabled”).Qualifiers_.Add “CCM_Policy_Override”, “TRUE”
objNewInstance.Properties_.Item(”DisableToolsOnXP”) = “False”
objNewInstance.Properties_.Item(”DisableToolsOnXP”).Qualifiers_.Add “CCM_Policy_Override”, “TRUE”
objNewInstance.Put_
If Err <> 0 Then
WScript.Echo “RC konnte nicht auf ” & strComputer & ” aktiviert werden. (” & Err.Number & “: ” & Err.Description & “)”
WScript.Quit(0)
Else
WScript.Echo “RC wurde auf ” & strComputer & ” aktiviert. Die RC-Konsole startet nach dem Klicken auf OK sobald der RC-Dienst läuft.”
End If
‘******************************************************************************
‘*** Wait for WUSER32 process
‘******************************************************************************
bWUSERisRunning = False
iTimeOut = 60
Do
Set colInstances = objWMIDefault.ExecQuery(”SELECT * FROM Win32_Process WHERE Name like ‘WUSER32.exe’”)
If colInstances.Count > 0 Then bWUSERisRunning = True
WScript.Sleep 1000
iTimeOut = iTimeOut - 1
Loop Until (bWUSERisRunning = True Or iTimeOut = 0)
‘******************************************************************************
‘*** Start Remote Console (Argument “2″ selects TCP/IP connection)
‘******************************************************************************
If bWUSERisRunning = True Then
Set WSHShell = WScript.CreateObject(”WScript.Shell”)
WSHShell.Run “C:SMSADMINbini386remote.exe 2 ” & strComputer, 1, TRUE
Set WSHShell = Nothing
Else
WScript.Echo “TimeOut beim warten auf WUSER32.exe. RC wird nun wieder deaktiviert.”
End If
‘******************************************************************************
‘*** Remove local policy to disable Remote Tools
‘******************************************************************************
Err.Clear
Set colInstances = objWMICCMPol.ExecQuery(”SELECT * FROM CCM_RemoteToolsConfig WHERE PolicyID like ‘{local}’”)
For Each objInstance In colInstances
objInstance.Delete_
If Err <> 0 Then
WScript.Echo “RC konnte nicht deaktiviert werden. (” & Err.Number & “: ” & Err.Description & “)”
WScript.Quit(0)
Else
WScript.Echo “RC wurde erfolgreich deaktiviert.”
End If
Next

Kommentarfunktion ist deaktiviert