J'ai un mini projet à réaliser. Voici le résumé de celui-ci :
On reçoit un lot qu'on doit installer dans l'environnement adéquat ou dans plusieurs environnement. En effet, on a plusieurs environnements et chaque environnement contint plusieurs serveurs windows et chaque serveur windows possède l'arborescence suivante :
F:\HistoriquePackage qui contient le lot reçu aprés installation.
F:\Livraisons\Package qui contient le lot reçu avant installation.
F:\Sauvegardes\Sites
D:\Sites\numero_caisse1\DEI
D:\Sites\numero_caisse2\DEI
D:\Sites\numero_caisse..\DEI
D:\Sites\numero_caisse1\partie_spécifique
D:\Sites\numero_caisse2\partie_spécifique
D:\Sites\numero_caisse..\partie_spécifique


chaque numero_caisse contient un dossier DEI commun pour toutes les caisses (D:\Sites\numero_caisse..) et un dossier spécifique pour chaque caisse.
l'objectif est de :
1/Contrôle de l'intégrité du lot reçu
2/Définition des variables suivant le type de machine ou de lot
3/dezip, detar du lot
4/installation du lot dans D:\Sites\numero_caisse..
5/la partie commune est installé pour toutes les caisse et la partie spécifique est installé pour chaque caisse
6/arrêt iis
7/démarrage iis
8/copie du lot vers F:\Historiquepackage
9/vider le réprtoire F:\Livraison\Package
10/envoi mail : installation réussi ou pas

le code que j'ai réalisé pour le moment fonctionne pour une machine local.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
 
 
on error resume next
set obj = CreateObject("Scripting.FileSystemObject")
set objLOG2 = obj.CreateTextFile("C:\Test2\LOG.txt")
 
'set MonShell=wscript.CreateObject("wscript.shell")
'retourner le nom du script en cours d'exécution
'wscript.echo wscript.ScriptName
 
'autre façon de retourner le nom du script en cours d'éxécution
'NomScript=wscript.ScriptName
'wscript.echo NomScript
 
'Récupérer le nom d'un ordinateur 
set WshNet=CreateObject("Wscript.NetWork")
Computername=WshNet.ComputerName
wscript.echo "Nom ordinateur :" &Computername
objLOG2.WriteLine "Nom ordinateur :"&Computername
wscript.echo vbcrlf
 
 
' récupérer le nom d'utilisateur
strUtilisateur=WshNet.username
wscript.echo "Nom de l'utilisateur : "&strUtilisateur
objLOG2.WriteLine "Nom de l'utilisateur : "&strUtilisateur
 
'récupérer le nom du script et non pas son chemin complet
NomScript=wscript.ScriptName
wscript.echo "Nom du script :" &NomScript
objLOG2.WriteLine "Nom du script :" &NomScript
wscript.echo vbcrlf
 
'récupérer chemin complet
sExecutionPath = Replace(WScript.ScriptFullName,"\" & wscript.ScriptName,"")
wscript.echo "Chemin complet du script :" &sExecutionPath
wscript.echo vbcrlf
wscript.echo "Chemin complet du script :" &sExecutionPath
objLOG2.WriteLine "Chemin complet du script :" &sExecutionPath
 
set objShell=wscript.CreateObject("WScript.Shell")
'appel de la propriété environment de l'objet shell
set objEnvironnement=objShell.Environment("PROCESS")
 
wscript.echo "affichage du nom du domaine DNS : "
objLOG2.WriteLine "affichage du nom du domaine DNS : "
strDnsDOmaine=objEnvironnement.Item("USERDNSDOMAIN")
wscript.echo strDnsDOmaine
objLOG2.WriteLine strDnsDOmaine
wscript.echo vbcrlf
 
 
wscript.Echo "affichage du nom de domaine NEtBIos :"
objLOG2.WriteLine "affichage du nom de domaine NEtBIos :"
strNetBiosDomain=objEnvironnement.Item("USERDOMAIN")
wscript.echo strNetBIosDomain
objLOG2.WriteLine strNetBIosDomain
wscript.echo vbcrlf
 
 
wscript.Echo "Inscription du chemin du profil de l'utilisateur :"
objLOG2.WriteLine "Inscription du chemin du profil de l'utilisateur :"
strProfile=objEnvironnement.ITem("USERPROFILE")
wscript.echo strProfile
objLOG2.WriteLine strProfile
wscript.echo vbcrlf
 
 
wscript.Echo "INscription du chemin d'accès au répertoire temporaire :"
objLOG2.WriteLine "INscription du chemin d'accès au répertoire temporaire :"
strTemp=objEnvironnement.Item("TEMP")
wscript.Echo strTemp
objLOG2.WriteLine strTemp
wscript.echo vbcrlf
 
 
'code pour récupération des variables d'environnement windows
wscript.echo "code pour récupération des variables d'environnement windows :"
objLOG2.WriteLine "code pour récupération des variables d'environnement windows :"
Set WshShellObj = WScript.CreateObject("WScript.Shell")
wscript.echo vbcrlf
 
 
wscript.Echo "affichage du nom de l'utilisateur courant :"
objLOG2.WriteLine "affichage du nom de l'utilisateur courant :"
Set WshProcessEnv = WshShellObj.Environment("Process") 
WScript.Echo WshProcessEnv("USERNAME")
objLOG2.WriteLine WshProcessEnv("USERNAME")
wscript.echo vbcrlf
 
wscript.echo "affichage de la variable d'environnement PATH du système :"
objLOG2.WriteLine "affichage de la variable d'environnement PATH du système :"
Set WshProcessEnv = WshShellobj.Environment("Process")
WScript.Echo "PATH = " & WshProcessEnv("PATH")
objLOG2.WriteLine "PATH = " & WshProcessEnv("PATH")
wscript.echo vbcrlf
 
 
 
wscript.echo "affichage des informations sur le processeur :"
objLOG2.WriteLine "affichage des informations sur le processeur :"
Set WshSysEnv = WshShellobj.Environment("System")
WScript.Echo WshSysEnv("PROCESSOR_ARCHITECTURE") & vbCr _
          & WshSysEnv("PROCESSOR_IDENTIFIER") & vbCr _
          & WshSysEnv("PROCESSOR_LEVEL") & vbCr _
          & WshSysEnv("PROCESSOR_REVISION")
objLOG2.WriteLine WshSysEnv("PROCESSOR_ARCHITECTURE") & vbCr _
          & WshSysEnv("PROCESSOR_IDENTIFIER") & vbCr _
          & WshSysEnv("PROCESSOR_LEVEL") & vbCr _
          & WshSysEnv("PROCESSOR_REVISION")
wscript.echo vbcrlf
 
 
wscript.Echo "nombre de variables d'environnement dans le type sélectionné :"
Set WshProcessEnv = WshShellobj.Environment("Process")
WScript.Echo WshProcessEnv.Count
wscript.echo vbcrlf
 
 
'récupérer chemin complet
sExecutionPath = Replace(WScript.ScriptFullName,"\" & wscript.ScriptName,"")
wscript.echo "Chemin complet du script :" &sExecutionPath
objLOG2.WriteLine "Chemin complet du script :" &sExecutionPath
wscript.echo vbcrlf
 
'=========================================================================================================================
'code ajouté le 24 novembre 2009 
'verbose ou debug permettent d'activer le mode Debug
'verbose = 0 sert pour désactiver ce mode
'verbose = 1 sert pour activer ce mode
 
'On error resume next
 
' déclaration de la variable ModeDebug (de debugage)
Dim ModeDebug
' déclaration des objets
Dim objFSO, objLOG
'instanciation des variable
ModeDebug = 0
 
 
'===========================================================================================================================
'===============================  Début du script qui sert pour le débugage  ===============================================
'===========================================================================================================================
 
'Vérification que le lot reçu n'est pa vide
 
set obj=CreateObject("Scripting.FileSystemObject")
set objFolder_1=obj.GetFolder("C:\Livraisons\Package")
if objFolder_1.Size = 0 then
	ModeDebug = 1
else
	wscript.echo "le lot reçu n'est pas vide"
	objLOG2.WriteLine "le lot reçu n'est pas vide"
	objLOG.WriteLine "le lot reçu n'est pas vide"
end if
'=====================================================================================================================
 
'création de l'instance de l'objet de FSO et création du fichier de LOG
set objFSO = CreateObject("Scripting.FileSystemObject")
set objLOG = objFSO.CreateTextFile("C:\Test\LOG.txt")
 
'set objFic = objFSO.OpenTextFile("C:\Test\fichier.txt")
fncModeDebug "la taille du répertoire est zèro ==> le lot est vide ou l'installation est déjà faite"
wscript.echo vbcrlf
 
'=====================================================================================================================
function fncModeDebug(Action)
 
If ModeDebug = 1 Then
	Wscript.echo Action
	objLOG.WriteLine Action
	'objFic.WriteLine Action
	if Err <> 0 Then
		'echo de la description de l'erreur
		wscript.echo vbcrlf
		wscript.echo "la source de l'erreur = " &Err.source
		wscript.echo "une erreur s'est produite" & "Description :" & Err.description
		wscript.echo "le numéro de l'erreur = " &Err.number
 
		'inscription de l'erreur dans le fichier LOG
		objLOG.WriteLine "Erreur" & "Description :" & Err.description
		objLOG.WriteLine "le numéro de l'erreur =" & Err.number
		objLOG.WriteLine "la source de l'erreur =" & Err.source
		objLOG2.WriteLine "Erreur" & "Description :" & Err.description
		objLOG2.WriteLine "le numéro de l'erreur =" & Err.number
		objLOG2.WriteLine "la source de l'erreur =" & Err.source
		'Réinitialisation de l'objet Err
		Err.Clear
	Else
		objLOG.WriteLine "Commande exécutée avec succès"
		objLOG2.WriteLine "Commande exécutée avec succès"
	End If
End If
 
End Function
 
'=========================================      Fin du script qui sert pour le débugage   ===============================
'=========================================================================================================================
 
'syntaxe de la méthode GetFolder 
'créer une instance de l'objet FSO
'set objFSO=CreateObject("Scripting.FileSystemObject")
'set objFolder=objFSO.GetFolder("chemin du répertoire")
 
'créer une instance de l'objet FSO
set objFSO=CreateObject("Scripting.FileSystemObject")
'syntaxe pour créer un répertoire unitile dans ce cas
'set objFolder=objFSO.CreateFolder("C:\Livraison")
 
'===================liste des fichiers et des répertoires et sous-répertoire du répertoire Package==============="
 
 
Dim oFSO,oFld
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")
stRep = "C:\Livraisons\Package"
'LectRep stRep 
 
if objFSO.FolderExists(stRep) THEN
	set objFolders=objFSO.GetFolder("C:\Livraisons\Package")
	wscript.echo "connexion au répertoire effectuée :"&objFolders.ParentFolder&"\"&objFolders.Name&""
	objLOG2.WriteLine "connexion au répertoire effectuée :"&objFolders.ParentFolder&"\"&objFolders.Name&""
	'extraction de la date de la création du répertoire
	wscript.echo "Date de création du répertoire :" &objFolders.DateCreated
	objLOG2.WriteLine "Date de création du répertoire :" &objFolders.DateCreated
	'extraction de la date de dernière modification du répertoire
	wscript.echo "Date de la dernière modification du répertoire :" &objFolders.DateLastModified
	objLOG2.WriteLine "Date de la dernière modification du répertoire :" &objFolders.DateLastModified
	'extraction de la taille du contenu d'un dossier (bytes)
	wscript.echo "taille en octets du répertoire :" &objFolders.Size
	objLOG2.WriteLine "taille en octets du répertoire :" &objFolders.Size
	wscript.echo "Attribut du répertoire :" &objFolders.Attributes
	objLOG2.WriteLine "Attribut du répertoire :" &objFolders.Attributes
	wscript.echo vbcrlf
	set fic2 = objFolders.Files
	wscript.echo "----------------liste des fichiers du répertoire " &objFolders.Name& "------------------------"
	objLOG2.WriteLine "----------------liste des fichiers du répertoire " &objFolders.Name& "------------------------"
	wscript.echo vbcrlf
	for each fichiers2 in fic2
		wscript.echo ""&fichiers2.Name&" Date (jjmmaa) : " & fichiers2.DateLastModified & "    Taille (octet) : " & fichiers2.Size&""
		objLOG2.WriteLine ""&fichiers2.Name&" Date (jjmmaa) : " & fichiers2.DateLastModified & "    Taille (octet) : " & fichiers2.Size&""
	Next
End if
'
'
' Fonction récursive de parcours de répertoire
'
Sub LectRep (stR )
	wscript.echo vbcrlf
	For each oFld in  oFSO.GetFolder(stR).SubFolders
		'wscript.echo vbcrlf
		Wscript.Echo "--------------- " & oFld.PAth & "-----------------"
		objLOG2.WriteLine "--------------- " & oFld.PAth & "-----------------"
		wscript.echo vbcrlf
   		ListeFichier (oFld.PATH)   
   		LectRep oFld.PATH
	Next
end sub
'
'
' Listing des fichiers du répertoire
'
Sub ListeFichier (stR)
 For each oFl in  oFSO.GetFolder(stR).Files
	wscript.echo ""&oFl.Name&" Date (jjmmaa) : " & oFl.DateLastModified & "    Taille (octet) : " & oFl.Size&""
	objLOG2.WriteLine ""&oFl.Name&" Date (jjmmaa) : " & oFl.DateLastModified & "    Taille (octet) : " & oFl.Size&""
 Next
End sub
wscript.echo vbcrlf
wscript.echo " -------------parcours récursif du répertoire " & objFolders.Name& "---------------"
objLOG2.WriteLine " -------------parcours récursif du répertoire " & objFolders.Name& "---------------"
LectRep stRep
 
 
'==================================== fin nouveau code le 26 novembre 2009 ==============================================
 
'copier le contenu d'un répertoire vers un autre répertoire 
'et créer le répertoire cible s'il n'existe pas (y compris l'arborescence)
dim objFSO1,objFSO2,objFSO3,objFSO4
 
'''''''''''''''''''''''''''''''''''copie de la partie commune''''''''''''''''''''''''''''''''''''''''''''''''
 
set objFSO=CreateObject("Scripting.FileSystemObject")
set objFolder1=objFSO.GetFolder("C:\Livraisons\Package\DEI")
set MonShell = Wscript.CreateObject("Wscript.Shell")
'les 6 lignes ci-dessous permettent de copier le contenu d'un répertoire vers un autre répertoire
IF objFSO.FolderExists(objFolder1) THEN
	objFSO.CopyFolder objFolder1, "C:\HistoriquePackage\DEI"  , true
	objFSO.CopyFolder objFolder1, "D:\Sites\numero_caisse1\DEI" , true
	objFSO.CopyFolder objFolder1, "D:\Sites\numero_caisse2\DEI" , true	
	objFSO.CopyFolder objFolder1, "D:\Sites\numero_caisse3\DEI" , true
 
	'MonShell.Run "xcopy C:\Livraison1\Package\DEI\*.*  C:\HistoriquePackage1\DEI\"
	'MonShell.Run "xcopy C:\Livraison1\Package\DEI\*.*  D:\Sites\Particuliers1\DEI\"
	'MonShell.Run "xcopy C:\Livraison1\Package\DEI\*.*  D:\Sites\Particuliers2\DEI\"
	'MonShell.Run "xcopy C:\Livraison1\Package\DEI\*.*  D:\Sites\Particuliers3\DEI\"
 
END IF
 
 
'''''''''''''''''''''''''''''''''''Copie des parties spécifiques des caisses : caisse1'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
'set objFSO=CreateObject("Scripting.FileSystemObject")
set objFolder2=objFSO.GetFolder("C:\Livraisons\Package\numero_caisse1")
IF objFSO.FolderExists(objFolder2) THEN
	objFSO.CopyFolder objFolder2, "C:\HistoriquePackage\numero_caisse1" , True
	objFSO.CopyFolder objFolder2, "D:\Sites\numero_caisse1\numero_caisse1" , True
 
	'MonShell.Run "xcopy C:\Livraison1\Package\Particuliers1\*.*  C:\HistoriquePackage1\Particuliers1\"
	'MonShell.Run "xcopy C:\Livraison1\Package\Particuliers1\*.*  D:\Sites\Particuliers1\Particuliers1\"
END IF
 
'''''''''''''''''''''''''''''''''''Copie des parties spécifiques des caisses : caisse2'''''''''''''''''''''''''''''''''''''''''
 
'set objFSO=CreateObject("Scripting.FilesSystemObject")
set objFolder3=objFSO.GetFolder("C:\Livraisons\Package\numero_caisse2")
IF objFSO.FolderExists(objFolder3) THEN
	objFSO.CopyFolder objFolder3, "C:\HistoriquePackage\numero_caisse2" , true
	objFSO.CopyFolder objFolder3, "D:\Sites\numero_caisse2\numero_caisse2" , true
 
	'MonShell.Run "xcopy C:\Livraison1\Package\Particuliers1\*.*  C:\HistoriquePackage1\Particuliers2\"
	'MonShell.Run "xcopy C:\Livraison1\Package\Particuliers1\*.*  D:\Sites\Particuliers2\Particuliers2\"
End if
 
''''''''''''''''''''''''''''''''''copie des partie spécifiques des caisses : caisse3'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
'set objFSO=CreateObject("Scripting.FilesSystemObject")
set objFolder4=objFSO.GetFolder("C:\Livraisons\Package\numero_caisse3")
IF objFSO.FolderExists(objFolder4) THEN
	objFSO.CopyFolder objFolder4, "C:\HistoriquePackage\numero_caisse3" , true
	objFSO.CopyFolder objFolder4, "D:\Sites\numero_caisse3\numero_caisse3" , true
 
	'MonShell.Run "xcopy C:\Livraison1\Package\Particuliers1\*.*  C:\HistoriquePackage1\Particuliers3\"
	'MonShell.Run "xcopy C:\Livraison1\Package\Particuliers1\*.*  D:\Sites\Particuliers3\Particuliers3\"
 
END IF
 
 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
objFSO.copyFile "C:\Livraisons\Package\*.*" , "C:\HistoriquePackage\" , true
 
''''''''''''''''''''''''''''''''''''''''''''''''''''
 
objFSO.DeleteFolder objFolder1
objFSO.DeleteFolder objFolder2
objFSO.DeleteFolder objFolder3
objFSO.DeleteFolder objFolder4
objFSO.DeleteFile "C:\Livraisons\Package\*.*"
 
set objFSO=Nothing
set objFolder1=Nothing
set objFolder2=Nothing
set objFolder3=Nothing
set objFolder4=Nothing
 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
le code est tellement simple car je suis débutante en programmation.
mon chef de projet m'a demandé de faire un fichier ini pour passer des paramètres lors d'exécution du script.
exemple : cscript vbscript.vbs nom_environnement1 numero_caisse1
càd que l'installation ne se fera pas pour toutes les caisse mais uniquement pour l'environnement "nom_environnement1" et pour la caisse numero_caisse1.
on pourra aussi spécifier toutes les caisses en passant la commande suivante:
cscript vbscript.vbs nom_environnement1

je ne sais pas comment faire pour le fichier ini pour définir les arguments à passer ainsi que les environnements.

mon code ne fonctionne que pour une machine locale.
Si quelqu'un pourra m'apporter une aide. je le remercie beaucoup.
ou si vous avez un code similaire afin que je puisse l'adapter à mon projet.
je sui débutante dans la programmation.

Merci d'avance
dadaapocalypse