1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
|
Dim fso, fsoB,LeFichier
Dim CheminNomFichier, PourTbl, TblLigne, TblColonne
Dim T
Dim Champs1
Dim compteur
compteur = 1
Const SiteServer = "KX1200899PC"
Const SiteCode = "FR1"
Dim sResourceID, oSMS, CollectionId
Dim wShell
Set PosteDansSCCM = CreateObject("Scripting.Dictionary")
PosteDansSCCM.CompareMode = vbTextCompare
Set wShell = WScript.CreateObject( "WScript.Shell" )
Set fso = CreateObject("Scripting.FileSystemObject")
path = fso.GetParentFolderName(wscript.ScriptFullName)
'pour se connecter a SCCM
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oSMS = oLocator.ConnectServer(SiteServer, "root\sms\site_" & SiteCode)
If Err Then
Err.Clear
wScript.echo "Cannot connect to SCCM."
wScript.Quit
End If
oSMS.Security_.ImpersonationLevel = 3
oSMS.Security_.AuthenticationLevel = 6
'Pour acceder au fichier mon fichier
Set fsoB = CreateObject("Scripting.FileSystemObject")
CheminNomFichier = "C:\Users\Desktop\Me\monfichier.txt"
Set LeFichier = fsoB.OpenTextFile(CheminNomFichier,1)
PourTbl = LeFichier.ReadAll
LeFichier.Close
'ajout d'un retour chariot à la derniere ligne pour le Splitage
PourTbl = PourTbl & vbclrf
TblLigne = Split(PourTbl,vbCrLf)
'pour obtenir le nombre de ligne du fichier
T = Ubound(TblLigne)
'dimensionne chaque variable
redim Champs1(T)
'Requete pour récupérer les postes de SCCM
Set ResIDs = oSMS.ExecQuery("SELECT * from SMS_R_System ")
compt = 0
'Pour chaque nom de Poste
for each oResID in ResIDs
'on ajoute le couple compt,oResID.name dans chaque indice du dictionary
PosteDansSCCM.add compt,oResID.name
'On incremente compt qui sert de clé
compt = compt + 1
next
'Pour la création du fichier pour stocker les noms de postes dans SCCM
Const ForReading = 1, ForWriting = 2
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim fileso, fil
Set fileso = CreateObject("Scripting.FileSystemObject")
Set fil = fileso.OpenTextFile("D:\x0ASUISS\Desktop\PostePresentDansSCCM.txt", ForWriting,true)
listecles = PosteDansSCCM.keys
listevaleurs = PosteDansSCCM.items
msgcles = ""
msgvaleurs = ""
monMessage = ""
'Parcours le dictionnary et mets dans un fichier tous les postes de SCCM
For num = 0 to PosteDansSCCM.Count - 1
msgcles = msgcles & " " & listecles(num)
msgvaleurs = msgvaleurs & " " & listevaleurs(num)
monMess = monMess + listevaleurs(num) +";"+ vbCrLf
compteurLigneFichierPosteDansSCCM = compteurLigneFichierPosteDansSCCM + 1
Next
'On ecrit dans le fichier et on met tous les postes de SCCM
fil.writeline(monMess)
'Pour chaque ligne du fichier PostePresentDansSCCM.txt,on va comparer avec chaque ligne
'du fichier monFichier et verifier que la condition est respectée.
'Lit le contenu d'un fichier dans une variable
Set fs = CreateObject("Scripting.FileSystemObject" )
Set fich = fs.OpenTextFile("D:\Users\ Me\Desktop\PostePresentDansSCCM.txt", ForReading)
PourTabul = fich.ReadAll
fich.Close
PourTabul = PourTabul & vbclrf
TblL = Split( PourTabul,vbCrLf)
'pour obtenir le nombre de ligne du fichier
i= Ubound(TblL)
'dimensionne chaque variable
redim Cmps1(i)
' Création d'un fichier qui va Stocker les postes de SCCM apparaissant dans le fichier monfichier
' Pour lequel le statut n'est pas Prendre
Set MonShell = WScript.CreateObject("WScript.Shell")
Dim fileFSO, filF
Set fileFSO = CreateObject("Scripting.FileSystemObject")
Set fileF = fileFSO.OpenTextFile("D:\Users\ Me\Desktop\PostePresentDansSCCM.txt", ForReading)
'Pour chaque ligne du fichier PosteDansSCCM.txt
for i = 0 to Ubound(TblL)
TblL(i) = TblL(i) & ";"
TblCol = split(TblL(i),";")
Cmps1(i)= TblCol(0)
for T =0 to ubound(TblLigne)
TblLigne(T) = TblLigne(T) & ";"
TblColonne = split(TblLigne(T),";")
Champs1(T)= TblColonne(0)
if Cmps1(i) = Champs1(T) and instr(TblLigne(T),"PRENDRE") = 0 then
'On accumule dans monMess les noms de postes pour laquelle la condition est à vraie.
' monMessage = monMessage + Cmps1(i) +";"+ vbCrLf
'ecrit au fur et mesure dans le Fichier les postes trouvés
fileF.writeline(Cmps1(i) +";"+ vbCrLf)
end if
next
next |
Partager