A simple vbscript I use for manual client installation. It does some basic quick checks and fixes before begining an install. One could feasibly use this for health checking, but it’s not nearly as robust as my actual logon framework or other scripts from people like Jason Sandys or Dan Thompson.
The variables strAdmin (local admin service account), strCcmSetup (path to folder with the ccmsetup.exe), and strArguement (install string) need to be defined before running the script. It’s worth mentioning that strCcmSetup is just the path to ccmsetup.exe, there is no need to actually type ccmsetup.exe into the path and it’s best if you don’t since I didn’t bother writing anything in to verify if it is or isn’t. The script will auto append the executable to that variable so ccmsetup.exe in the path will give you ccmsetup.execcmsetup.exe
'Author Daniel Belcher || 'CCMsetup Function || 'Date 2/11/2011 rev 5/20/2011 || '==================================|| '|Objects, Variables, and Constants ******************************************** '=============================================================================|| '|| Non-Standard Installer Variables - Please define them || '|| Admin Account strAdmin = "domain\user" '|| Path to ccmsetup.exe strCcmSetup = "\\path\where\ccmsetup.exe\resides\" '|| Install string strArguement = "/noservice SMSSITECODE=ABC SMSSLP=SERVER.ADDRESS " _ & "SMSFSP=SERVER.ADDRESS" ' || '=============================================================================|| Const DEBUGMSG = False 'Boolean to use for testing False = Silent True = Verbose Const ForAppending = 8 Dim oWShell Set oWShell = CreateObject("WScript.Shell") Dim oFSo Set oFSO = CreateObject("Scripting.FileSystemObject") Dim oNet Set oNet = CreateObject("Wscript.Network") ComputerName = oNet.ComputerName Dim Target Target = "." Dim oWMISvc Set oWMISvc = GetObject("winmgmts:\\"&Target) '|Main Run *******************************************************************|| '=============================================================================|| WriteLog "Starting "&Wscript.Scriptname&" on "&ComputerName,2 PreReq CCMSetup Report 'SubRoutines *****************************************************************|| '=============================================================================|| Sub WriteLog(msg,mtype) 'Subroutine for writing the log logname = wscript.scriptname&".log" if not oFSo.FileExists(logname) then oFSo.CreateTextFile(logname) end if msgline = "<![LOG["&msg&"]LOG]!><time="&""""&DatePart("h",Time) msgline = msgline &":"&DatePart("n",Time)&":"&DatePart("s",Time) msgline = msgline &".000+0"""&" date="""&Replace(Date,"/","-") msgline = msgline &""""&" component="""&WScript.ScriptName msgline = msgline &""" context="""" type="""&mtype msgline = msgline &""" thread="""" file="""&WScript.ScriptName& """>" Set oLogFile = oFSo.OpenTextFile(logname, ForAppending, True) oLogFile.WriteLine msgline oLogFile.Close if DEBUGMSG then wscript.echo msg&" "& mtype End Sub '******************************************************************************* Sub SvcStart(service) 'Attempts to start a service Set WMIServices = oWMISvc.ExecQuery _ ("Select * from Win32_Service where name = '"&service&"'") For Each item in WMIServices if lcase(item.startmode) <> "automatic" then item.ChangeStartMode("Automatic") end if start = item.startservice() wscript.sleep 4000 if start <> 0 Then WriteLog "ERROR: Failed to start the "&service&" Service, " _ & "investigation required", 3 wscript.quit(0) else WriteLog "Succesfully started "& service &" Service",1 end if next End Sub '|Functions ******************************************************************|| '=============================================================================|| Function PreReq 'Prerequisite check for client installation Set WMIServices = oWMISvc.ExecQuery _ ("Select * from Win32_Service") strService = "lanmanworkstation" regAdminSPath = "HKLM\SYSTEM\CurrentControlSet\services\LanmanServer\" _ & "Parameters\" For Each item in WMIServices if lcase(item.name) = strService then if lcase(item.state) <> "running" then writelog "Warning: "&strService&" was not running, " _ & "attempting to start...", 2 SvcStart strService else writelog strService& " was found running, OK", 1 end if end if next if not oFSO.FolderExists("\\"&computername&"\admin$") then WriteLog "Warning: Admin shares not available, attempting to add " _ & "registry key...", 2 On Error Resume Next oWShell.RegWrite regAdminSPath & "AutoShareWKS", 1, "REG_SZ" if err.Number <> 0 then WriteLog "ERROR: "®AdminSPath&"AutoShareWKS, 1 failed to write, or " _ &"already exists.", 3 else WriteLog regAdminSPath&"Notice: AutoShareWKS, 1 written succesfully. " _ & " Restart required to take effect.", 2 end if Wscript.Echo "AutoShareWKS key was written to: " &vbcrlf _ ®AdminSPath & vbcrlf _ &"Please restart the machine, and rerun this script" else WriteLog "Admin$ shares found, and working.", 1 end if Set AdminCheck = GetObject("WinNT://" & oNet.ComputerName _ & "/Administrators,group") if AdminCheck.IsMember("WinNT://"& strAdmin) then WriteLog "User "&strAdmin&" found in Local Adminstrators group", 1 else WriteLog "Warning: User "&strAdmin&" not found in Local Administrators group",2 on Error Resume Next AdminCheck.Add("WinNT://"&strAdmin) if Err.Number <> 0 then WriteLog "ERROR: Unable to add "&strAdmin&" to the Local Administrators group",3 Wscript.Echo "Unable to add "&strAdmin&" to local Admins." & vbcrlf _ &"Please do so manually and rerun this script." Wscript.Quit(0) end if end if End Function '******************************************************************************* Function CCMSetup 'Client detection and installation Set WMIServices = oWMIsvc.ExecQuery _ ("Select * from Win32_Service where name ='ccmexec'") boorun = true for each objservice in WMIServices strservice = lcase(objservice.name) if strservice = "ccmexec" then boorun = "False" next if not boorun then For Each service in WMIServices if lcase(service.state) <> "running" then svcStart "ccmexec" 'Attempt to start service if stopped WriteLog "Warning: CcmExec service found, but was not running, " _ & "attempting to start...", 2 end if next WriteLog "SCCM client service, CcmExec found, closing script", 1 exit function end if if boorun then oWShell.run strCcmsetup&"ccmsetup.exe " & strArguement WriteLog "CcmSetup has begun using: ccmsetup.exe"& strArguement,1 end if End Function '****************************************************************************** Function Report If DEBUGMSG then msgbox "Complete" 'Set for popup on script complete End Function 'End *************************************************************************|| '=============================================================================||
As has become my standard, the logs are written in a markup that works with trace32.