Dim $strServerLocatorPoint
Dim $strSiteCode
Dim $strSMSInstall
Dim $strSMSLogText
Dim $strComputer
Dim $strSMSClient
Dim $errReturnCode
$strServerLocatorpoint = "servername"
$strSiteCode = "sitecode"
$strSMSInstall = "no"
$strSMSLogText = ""
$strComputer = "."
$strSMSClient = ""
$errReturnCode = ""
;Read WMI to get state of SMS client
;------------------------------------
;
$objWMIService = $GetObject("winmgmts:\\" + strComputer + "\root\cimv2")
$SMSService = $objWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE DisplayName = 'SMS Agent Host' ")
SMSServiceCheck
If $errReturnCode <> "0"
SMSInstallCheck
If $strSMSInstall = "YES"
SMSInstall
end if
Else
$SMSService = $objWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE DisplayName = 'SMS Remote Control Agent' ")
SMSServiceCheck
End If
Wscript.quit
;'*********************************
;'*Subroutines & Functions follow *
;'*********************************
function SMSServiceCheck()
;------------------
$errReturnCode = "99"
For Each $objService in SMSService
If objService.State <> "Running"
$errReturnCode = $objService.Change( , , , , "Automatic")
$errReturnCode = $objService.StartService()
$strSMSLogText = $objService.Displayname + " restarted from Login Script"
SMSLogEvent
else
$errReturnCode = $objService.Change( , , , , "Automatic")
end if
Endfunction
function SMSInstall()
;-------------
$strSMSClient = "\\" + strServerLocatorPoint + "\SMSClient\i386\CAPINST.EXE /SLP=" +
$strServerLocatorPoint + " /ADVCLI /ADVCLICMD SMSSITECODE=" + $strSiteCode
$objShell = WScript.CreateObject("WScript.Shell")
$objShell.Run ($strSMSClient)
$strSMSLogText = "SMS Client installed from Login Script"
SMSLogEvent
Endfunction
function SMSLogEvent()
;--------------
Global $EVENT_SUCCESS = 4
$objShell = wscript.CreateObject("wscript.Shell")
$objShell.LogEvent ($EVENT_SUCCESS, $strSMSLogText)
$strSMSLogText = ""
Endfunction
Function SMSInstallCheck()
;-----------------------
$HKEY_LOCAL_MACHINE = "&H80000002"
$strSMSInstall = "NO"
$strSMSServer = "0"
$strSMSProductSuite = ""
$strSMSType = ""
$strSMSVersion = ""
$strMIPSvalue = ""
$strComputer = "."
;Lets make sure we only install on WS with no MIPS exceptions
$objWMIService = $GetObject("winmgmts:"
+ "{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2")
$colOperatingSystems = $objWMIService.ExecQuery ("SELECT * FROM Win32_OperatingSystem")
$objWMIService = $GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\" + $strComputer + "\root\cimv2")
$colOperatingSystems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each $objOperatingSystem in $colOperatingSystems
$strSMSServer = $InStr($objOperatingSystem.Caption, "Server")
$strSMSProductSuite = $objOperatingSystem.OSProductSuite
$strSMSType = $objOperatingSystem.OSType
$strSMSVersion = Left($objOperatingSystem.Version, 1)
Next
;Check for security Exclusion
$objReg= $GetObject("winmgmts:{impersonationLevel=impersonate}!\\" + $strComputer + "\root\default:StdRegProv")
$strKeyPath = "SOFTWARE\CSC\EDM\SMS\ClientConfig\Exclusions\MIPS"
$strEntryName = "ExclusionID"
$objReg.GetStringValue($HKEY_LOCAL_MACHINE,$strKeyPath,$strEntryName,$strMIPSValue)
;Lets work out if we should install a new client
If $strSMSServer <> "0" or $strSMSProductSuite <> "" or $strSMSType <> "18" or $strSMSVersion = "4" or $strMIPSValue <> ""
$strSMSInstall = "NO"
Else
$strSMSInstall = "YES"
EndIf
EndFunction