'Ctx_RecreateLhc '01.03.2012 : V1.0 '04.03.2012 : V1.1 Adding 64 bits compatibility Set wshnetwork = WScript.CreateObject("WScript.Network" ) user = wshnetwork.username domain = wshnetwork.userdomain computer = wshnetwork.computername Vers = "1.1" 'Fomat Date and time DateFil = DAY(Now()) & "-" & MONTH (Now()) & "-" & YEAR(Now()) HoursFil = Right("00" & Hour(now), 2) & Right("00" & Minute(now), 2) & Right("00" & Second(now), 2) 'Create Log file Set objFSO = CreateObject("Scripting.FileSystemObject") Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set Flog = objfso.CreateTextFile("RecreateLHC_Log-" & DateFil & "--" & HoursFil & ".html") Flog.Close Set Flog = objfso.OpenTextFile("RecreateLHC_Log-" & DateFil & "--" & HoursFil & ".html", 2) 'Add title and date Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" 'Open File server Set FServers = objfso.OpenTextFile("servers.txt") 'LHC path LHCPath ="" LHC32Path = "\C$\Program Files\Citrix\Independent Management Architecture\imalhc.mdb" LHC64Path = "\c$\Program Files (x86)\Citrix\Independent Management Architecture\imalhc.mdb" 'DSMAINT path DsmaintPath = "" Dsmaint32Path = "c:\Program Files\Citrix\System32\Citrix\IMA\DSMAINT recreatelhc" Dsmaint64Path = "c:\Program Files (x86)\Citrix\System32\Citrix\IMA\DSMAINT recreatelhc" 'Testing architecture OS (2/3) const HKEY_LOCAL_MACHINE = &H80000002 strValueName = "PROCESSOR_ARCHITECTURE" '-------------------------- 'Read each line on Fservs '-------------------------- Count = 0 Do While Not Fservers.AtEndOfStream strComputer = Fservers.Readline Count = Count + 1 'Testing architecture OS (1/3) Set oReg=GetObject( "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SYSTEM\CurrentControlSet\Control\Session Manager\Environment\" oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\cimv2") Flog.Write "" Flog.Write "" Set objIMAService = objWMIService.Get("Win32_Service.Name='IMAService'") 'Stop IMA service and dependancies Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Return = objIMAService.StopService() Set colServiceList = objWMIService.ExecQuery("Associators of " _ & "{Win32_Service.Name='IMAService'} Where " _ & "AssocClass=Win32_DependentService " & _ "Role=Antecedent" ) For Each objService in colServiceList Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" objService.StopService() Next Wscript.Sleep 20000 Return = objIMAService.StopService() Flog.Write "" Flog.Write "" Wscript.Sleep 20000 'Testing architecture OS 3/3 If strValue = "AMD64" then LHCPath = LHC64Path DsmaintPath = Dsmaint64Path elseif strValue = "x86" then LHCPath = LHC32Path DsmaintPath = Dsmaint32Path end if Flog.Write "" Flog.Write "" 'Read properties LHC file before recreate LHC Set Flhc = objFSO.GetFile("\\" & StrComputer & LHCPath) Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" Wscript.Sleep 5000 'Launch DSMAINT RecreateLCH Set objProcess = objWMIService.Get("Win32_Process") errReturn = objProcess.Create(DsmaintPath, null, null, intProcessID) If errReturn = 0 Then Flog.Write "" Flog.Write "" Else Flog.Write "" Flog.Write "" End If Wscript.Sleep 10000 'Read properties LHC file After recreate LHC Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" 'Restart Services Flog.Write "" Flog.Write "" Return = objIMAService.StartService() Set colServiceList = objWMIService.ExecQuery("Associators of " _ & "{Win32_Service.Name='IMAService'} Where " _ & "AssocClass=Win32_DependentService " & _ "Role=Antecedent" ) For Each objService in colServiceList Flog.Write "" Flog.Write "" Flog.Write "" Flog.Write "" objService.StartService() Next Return = objIMAService.StartService() Flog.Write "" Flog.Write "" Flog.Write "" Loop Flog.Write "" Flog.Write "" Flog.Close Wscript.echo "End process"
RecreateLHC : " & Vers & "
Date : " & Now & "
Launch by : " & domain & "\" & user & " on : " & computer & "
 
 
Serveur(s) :
 
" & strComputer & "
IMAService service state : " & objIMAService.State & "
Stopping IMAService service
Dependent service : " & objService.Name & " State : " & objService.State & "
Stopping dependent service " & objService.Name & "
Stopping IMAService service (return value): " & Return & "
OS architecture : " & strValue & "
Read properties LHC file before recreate LHC :
LHC Size: " & Flhc.Size & "
RecreateLHC was started
RecreateLHC error: " & errReturn & "
Read properties LHC file after recreate LHC :
LHC Size: " & Flhc.Size & "
Starting IMAService service
Dependent service : " & objService.Name & " State : " & objService.State & "
Starting dependent service " & objService.Name & "
Return value IMA service : " & Return & "
 
Total Server(s) : " & Count & "