On error Resume Next Dim WshShell, objFSO, strOCXLocation, strICAVersion 'Lecture de la clé de registre permettant de connaitre la version du client ICA installé sur le poste (CTX229784) Set WshShell = WScript.CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") strOCXLocation = WshShell.RegRead("HKCR\CLSID\{238F6F83-B8B4-11CF-8771-00A024541EE3}\InprocServer32\") strICAVersion = objFSO.GetFileVersion(strOCXLocation) 'wscript.echo strICAVersion 'Version minimal cu client ICA supporté strICAmini = 11.2 'Récupération du Hostname Set wshNetwork = WScript.CreateObject( "WScript.Network" ) strComputerName = wshNetwork.ComputerName 'Création du fichier de log Set WriteFileLog = objFSO.OpenTextFile("c:\IcaFileLog_" & strComputerName & ".txt", 8, True) WriteFileLog.WriteLine("---------------------------------") WriteFileLog.WriteLine("Date log :" & (now)) WriteFileLog.WriteLine("Hostname : " & (strComputerName)) WriteFileLog.WriteLine("---------------------------------") & Vbcrlf WriteFileLog.Writeline("Client ICA installé : " & strICAVersion) WriteFileLog.Writeline("Client ICA requis : " & strICAmini) 'Si aucun client ICA n'est détecté, installation du client ica if strICAVersion = "" then Err.Clear() WriteFileLog.Writeline(time & " - Pas de client ICA installé, le client ICA " & strICAmini & " va être installé sur ce poste") WshShell.Run "\\Votre_SHARE\11_2\CitrixOnlinePluginFull_11_2.exe /silent ADDLOCAL='ICA_Client,PN_Agent,SSON' ENABLE_SSON='yes' SERVER_LOCATION=http://Votre_Site_Wi/PNAgent/config.xml", 1, True if Err.Number = 0 then WriteFileLog.Writeline(time & " - Le client ICA " & strICAmini & " est installé sur ce poste") else WriteFileLog.Writeline(time & " - Une erreur s'est produite lors de l'installation du client ICA " & strICAmini) WriteFileLog.Writeline (time & " - Code erreur : " & Err.Number & " --- Description du code erreur : " & Err.Description) End if WriteFileLog.Writeline VbCrlf & ("------ Fin de log ------") & VbCrlf & VbCrlf WriteFileLog.Close WScript.Quit else end if 'On récupere les la version du client ica sans la build, remplacement des séparateurs et formatage de la variable strICAVersion mTab = Split(strICAVersion, ".") strICAVersion = mTab(0) & "." & mTab(1) strICAVersion = replace(strICAVersion,".",",") strICAVersion = CDbl(strICAVersion) 'wscript.echo strIcaVersion 'Version des clients ICA et leurs GUID respectifs Dim TbIvarVer(16,2) TbIvarVer(0,1)=6.30 TbIvarVer(0,2)="A renseigner" TbIvarVer(1,1)=6.31 TbIvarVer(1,2)="{3049E69E-74F2-48C0-B9A1-9CD8125588E9}" TbIvarVer(2,1)=7.00 TbIvarVer(2,2)="A renseigner" TbIvarver(3,1)=7.01 TbIvarver(3,2)="A renseigner" TbIvarver(4,1)=7.10 TbIvarver(4,2)="{8F5F8B07-50AC-401F-A441-A37740851A5C}" TbIvarver(5,1)=8.00 TbIvarver(5,2)="{2C42ED1E-6315-4E63-89E6-057EA114EBB8}" TbIvarver(6,1)=8.10 TbIvarver(6,2)="{76E4A642-BC3E-438A-8450-0C15A36B5B18l}" TbIvarver(7,1)=9.00 TbIvarver(7,2)="{4E21223F-8D6C-446E-9CD3-587D206A8400}" TbIvarver(8,1)=9.10 TbIvarver(8,2)="{E92B7A19-5FD5-4AEE-9FEF-7AD5DD3A675E}" TbIvarver(9,1)=9.15 TbIvarver(9,2)="{DF1D5FEC-D67C-43C8-9230-41F5DF350196}" TbIvarver(10,1)=9.20 TbIvarver(10,2)="{D989BCC0-757C-4FB6-893C-512DF4382656}" TbIvarver(11,1)=9.23 TbIvarver(11,2)="{7A1FB67F-A340-472A-97C3-A6AFFE078AAE}" TbIvarver(12,1)=10.000 TbIvarver(12,2)="{B2AE44CB-2AAB-4C08-A54B-D264BD604DA8}" TbIvarver(13,1)=10.100 TbIvarver(13,2)="{E89956F9-5B89-470E-818D-BD46102D0A01}" TbIvarver(14,1)=10.150 TbIvarver(14,2)="{42ACCB45-3363-47E0-94E9-F0074CC8BC56}" TbIvarver(15,1)=10.200 TbIvarver(15,2)="{2624B680-02BC-4CBC-839C-DA20DF6EF6EC}" N = UBound(TbIvarVer) - LBound(TbIvarVer) 'Teste si le client ICA local a une version validée If strICAmini < strICAVersion then 'wscript.echo "la version du client " & strICAVersion & " ne néccéssite pas de mise à à jour " WriteFileLog.Writeline(time & " : Le client ICA installé ne néccéssite pas de mise à jour") & VbCrlf & VbCrlf else 'wscript.echo "la version du client " & strICAVersion & " doit être mise à jour " For i=0 To N if TbIvarVer(i,1) = strICAVersion then 'wscript.echo TbIvarVer(i,1) & " - " & TbIvarVer(i,2) WriteFileLog.Writeline(time & " : Le client ICA " & strICAVersion & " va être supprimé") WshShell.Run "msiexec.exe /x " & TbIvarVer(i,2) & " /forcerestart /passive", 1, True WriteFileLog.Writeline(time & " : Le client ICA " & strICAVersion & " a été supprimé") WriteFileLog.Writeline VbCrlf & ("------ Fin de log ------") & VbCrlf & VbCrlf WriteFileLog.Close WScript.Quit else End If Next WriteFileLog.Writeline time & " : La version du client ICA " & strICAVersion & " n'a pu être suprimé du poste" end if WriteFileLog.Writeline VbCrlf WriteFileLog.Writeline ("------ Fin de log ------") & VbCrlf & VbCrlf WriteFileLog.Close