Oléane Web  
   
Mercredi 19 Novembre 2008  
  Session fermée, identifiez-vous  


Scripting Windows

Ma bibliothèque de scripts expose des exemples de scripts conçus pour fonctionner sous Windows 2000, Windows XP et Windows Server 2003. Les scripts qui y sont référencés ont tous été écrits avec VBScript.

Scripting de base
    Afficher une boite de dialogue
    	' Affiche une fenetre d'information 
    
    	CRLF = Chr(13) & Chr(10)
    	Tabulation  = Chr(9)
    
    	WshShell.Popup  "Date : "	& Tabulation 	& Tabulation	& date	& CRLF &  _		
    			"Heure : "	& Tabulation 	& Tabulation	& time	& CRLF &  _
    			10, _
    			"Petit message comme d'exemple", _
    			vbOKonly
    		

    Mapper des lecteurs réseau selon l'appartenance à un groupe (stations)
    	' Initialisation
    	' ----------------------------------------------
    
    	Set objRootLDAP = GetObject("LDAP://RootDSE" )
    	Set objNetwork = CreateObject("Wscript.Network" )
    
    
    	'Identification de la station
    	' ----------------------------------------------
    
    	Set objADSysInfo = CreateObject("ADSystemInfo" )
    	strUser = objADSysInfo.ComputerName
    	Set objUser = GetObject("LDAP://" & strUser)
    	strGroups = objUser.MemberOf
    
    
    	' Extraction du groupe
    	' ----------------------------------------------
    
    	if strGroups <> "" then
    
    		strGroups = split(strGroups,",")(0)
    		strGroups =  Replace(strGroups,"CN=","") 
    
    	end if
    
    
    	' Mappage des lecteurs en fonction des groupes
    	' ----------------------------------------------
    
    	Select Case strGroups
    
    		Case "G-SVT" 			objNetwork.MapNetworkDrive "X:", "\\Serveur\svt"
    		Case "G-MATHEMATIQUES" 	objNetwork.MapNetworkDrive "X:", "\\Serveur\maths"
    		Case "G-SCIENCE" 		objNetwork.MapNetworkDrive "X:", "\\Serveur\science"
    			
    	End Select
    		

    Mapper des imprimmantes
    	' Pour poursuivre l'exécution du script même si une erreur intervient
    	on error resume next
    	' Mappage de l'imprimante
    	WSHNetwork.AddWindowsPrinterConnection "\\" & ServeurDC & "\Lexmark_T430"
    	' Gestion du code d'erreur
    	on error goto 0
    	If err.number <> 0 Then
    		MAPPING_IMP1 = "ERREUR"
    	Else
    		MAPPING_IMP1 = "OK"
    	End If
    		

Fichiers et répertoires
    Identifier le propriétaire d'un fichier
    	strComputer = "."
    	Set objWMIService = GetObject("winmgmts:" _
    		  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    	' Le fichier à analyser
    	strFile = "C:\mon_fichier.zob"
    
    	Set colItems = objWMIService.ExecQuery _
    		("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _ 
    			& " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
    
    	For Each objItem in colItems
    		Wscript.Echo objItem.ReferencedDomainName
    		Wscript.Echo objItem.AccountName
    	Next
    		

    Supprimer tout les fichiers d'un répertoire datant de plus de 10 jours
    	' Parcours du répertoire
    	Set fold_dump = objFSO.GetFolder("d:\donnees\cuicui")
    	Set fold_sub_dump = fold_dump.files
    	For each fic_dump in fold_sub_dump
    		' Comparaison avec la date actuelle moins le nombre de jours désiré
    		If (fic_dump.datelastmodified) < (now-10) then
    			' Supression du fichier
    			objFSO.DeleteFile(fic_dump)
    		End IF
    	Next
    		

    Créer une arborescence (fonction)
    	Sub CreerArborescence(Chemin)
    		' On vérifie si le chemin n'existe pas
    		If Not objFSO.FolderExists(chemin) Then
    			CreerRep(objFSO.GetParentFolderName(chemin))
    			' Création du dossier
    			objFSO.CreateFolder(chemin)
    		End If
    	End Sub
    		

Ouverture et fermeture de session (scripts complets)
    Exemple de script d'ouverture de session
    	'================================================================================
    	' S C R I P T    D' O U V E R T U R E    D E    S E S S I O N
    	'================================================================================
    	'
    	' - Mappage des lecteurs réseau
    	' - Installation des imprimantes réseau
    	' - Information sur la taille du lecteur personnel
    	'
    	' Auteur : CCE le 25/08/2008 
    	'********************************************************************************
    
    	' Pour avoir le mode debug mettre la ligne suivante en commentaire 
    	On Error Resume Next
    
    
    	' -------------------------------------------------------------------------------
    	' Paramétrage de base
    	' -------------------------------------------------------------------------------
    
    	Fichier_logon = "\\tice-dc\logs$\logs__logon.csv"
    	taille_critique = 2500
    	ServeurDC = "TICE-DC"
    
    
    	' -------------------------------------------------------------------------------
    	' Déclarations
    	' -------------------------------------------------------------------------------
    
    	Set WSHNetwork = WScript.CreateObject("WScript.Network")
    	Set WSHShell = WScript.CreateObject("WScript.Shell")
    	Set Shell = createobject("shell.application")
    	Set objRDSE = GetObject("LDAP://rootDSE")
    	Set objfso = CreateObject("scripting.filesystemobject" )
    	Set objConnection = CreateObject("ADODB.Connection")
    	Set objCommand = CreateObject("ADODB.Command")
    
    	CRLF = Chr(13) & Chr(10)
    	Tab = Chr(9)
    	Const ForReading = 1, ForWriting = 2, ForAppending = 8
    
    
    	' -------------------------------------------------------------------------------
    	' Lecture des informations de l'utilisateur
    	' -------------------------------------------------------------------------------
    
    	Dim domaine, domaine_complet, user, objUser, description, station
    	user = WSHNetwork.username
    	station = UCASE (WSHNetwork.ComputerName)
    	domaine = WSHNetwork.UserDomain
    	domaine_complet = objRDSE.Get("defaultNamingContext")
    	Serveur = (split(WSHShell.ExpandEnvironmentStrings("%LogonServer%"),"\\"))(1)
    
    	'Recup du champ description
    	objConnection.Open "Provider=ADsDSOObject;"
    	objCommand.ActiveConnection = objConnection
    	objCommand.CommandText = ";(&(objectCategory=User)(samAccountName=" & user & "));distinguishedName,samAccountName;subtree"
    	Set objRecordSet = objCommand.Execute
    	If objRecordset.RecordCount <> 0 Then
    		Set objUser = GetObject ("LDAP://" & objRecordset.Fields("distinguishedName" ))
    		description = objUser.description
    	Else
    		description = ""
    	End If
    	objConnection.Close
    
    
    	' -------------------------------------------------------------------------------
    	' Mappage des lecteurs réseaux
    	' -------------------------------------------------------------------------------
    
    	' mappage du répertoire PROJET en Y:\
    	MAPPING_PROJET = monter_lecteur("Y:","\\" & ServeurDC & "\projet","Projet")
    
    	' mappage du répertoire LOGICIELS en X:\
    	MAPPING_LOGICIELS = monter_lecteur("X:","\\" & ServeurDC & "\Logiciels","Logiciels")
    
    	'Renommage du lecteur perso Z:
    	shell.namespace("Z:\").self.name="Personnel (" & UCase(User) & ")"
    
    
    	' -------------------------------------------------------------------------------
    	' Mappage des imprimantes
    	' -------------------------------------------------------------------------------
    
    	If ucase(station) <> ucase (serveur) Then
    		'LEXMARK T430
    		on error resume next
    		WSHNetwork.AddWindowsPrinterConnection "\\" & ServeurDC & "\Lexmark_T430"
    		on error goto 0
    		If err.number <> 0 Then
    			MAPPING_IMP1 = "ERREUR"
    		Else
    			MAPPING_IMP1 = "OK"
    		End If
    
    		'LEXMARK OPTRA M412
    		on error resume next
    		WSHNetwork.AddWindowsPrinterConnection "\\" & ServeurDC & "\Lexmark_OPTRA_M412"
    		on error goto 0
    		If err.number <> 0 Then
    			MAPPING_IMP2 = "ERREUR"
    		Else
    			MAPPING_IMP2 = "OK"
    		End If
    	End If
    
    
    	' -------------------------------------------------------------------------------
    	' Analyse de l'espace utilisé par le lecteur personnel
    	' -------------------------------------------------------------------------------
    
    		' Cette vérification permet de prévenir l'utilisateur si'il a trop de 
    		' données car les sauvegardes vont probablement planter
    		If (ObjFso.Folderexists("Z:\")) Then
    			Set repperso_chemin = ObjFso.GetFolder("Z:\")
    			' Conversion en Mo
    			repperso_taille = round((repperso_chemin.size/(1024*1024)))
    		End If
    
    		
    	' -------------------------------------------------------------------------------
    	' Gestion des logs
    	' -------------------------------------------------------------------------------	
    
    		' Si le fichier ZAKLOGON existe, on l'ouvre pour écrire à la fin
    		If objfso.FileExists(Fichier_logon) then
    			Set f = objfso.OpenTextFile(Fichier_logon, ForAppending, true)
    		else
    			' Si le fichier n'existe pas, on le crée et on log dans la première ligne
    			Set f = objfso.OpenTextFile(Fichier_logon, ForWriting, true)
    			f.WriteLine ( "date;time;user;station;serveur;repperso_taille;MAPPING_PROJET;MAPPING_LOGICIELS;MAPPING_IMP1;MAPPING_IMP2" ) 
    		End If
    		f.WriteLine ( date & ";" & time & ";" & user & ";" & station & ";" & Serveur & ";" & repperso_taille & ";" & MAPPING_PROJET & ";" & MAPPING_LOGICIELS & ";" & MAPPING_IMP1 & ";" & MAPPING_IMP2 ) 
    		f.close
    		Set f = Nothing
    		
    
    	' -------------------------------------------------------------------------------
    	' Affichage de la popup
    	' -------------------------------------------------------------------------------
    
    	message_popup = "Vous êtes connecté sur le domaine " & domaine & " via " & station & CRLF & " le " & date & " à " & time & CRLF & CRLF
    
    	message_popup = message_popup & "Serveur domaine :" & Tab & Tab & Serveur & CRLF
    	message_popup = message_popup & "Serveur données :" & Tab & Tab & ServeurDC & CRLF & CRLF
    
    	message_popup = message_popup & "Lecteur Logiciels (X:\) :" & Tab & MAPPING_LOGICIELS & CRLF
    	message_popup = message_popup & "Lecteur Projet (Y:\) :" 	& Tab & MAPPING_PROJET & CRLF & CRLF
    	message_popup = message_popup & "Lecteur Personnel (Z:\) :" & Tab & repperso_taille & " Mo" & CRLF & CRLF
    
    	message_popup = message_popup & "Imprimante 1 :" & Tab & Tab & MAPPING_IMP1 & CRLF
    	message_popup = message_popup & "Imprimante 2 :" & Tab & Tab & MAPPING_IMP2
    
    	WshShell.Popup  message_popup,10,"AU BOULOT " & description & " !!!",vbOKonly
    
    	If (repperso_taille > taille_critique) Then
    		WshShell.Popup "O U P S" & CRLF & CRLF & "Vous avez beaucoup de données dans votre lecteur personnel. Aucun quotas n'est définit mais " & repperso_taille & " Mo commence à faire beaucoup." & CRLF & CRLF & " Ça serais bien de faire un peu de ménage afin de ne pas faire planter les sauvegardes." & CRLF,45,"Taille de votre dossier personnel",64
    	End If
    
    	' -------------------------------------------------------------------------------
    	' Sortie
    	' -------------------------------------------------------------------------------
    
    	Wscript.quit
    
    	' -------------------------------------------------------------------------------
    	' FONCTIONS
    	' -------------------------------------------------------------------------------
    
    	Function monter_lecteur(lettre,chemin,nom)
    		' Permet de continuer l'exécution de la fonction en cas d'erreur
    		On Error Resume Next
    		
    		' Initialisation de la variable d'erreur
    		err.clear
    		
    		' Destruction du lecteur s'il existe
    		If ObjFso.Folderexists(lettre) Then 
    			WSHNetwork.RemoveNetworkDrive lettre
    		End If
    
    		' Mappage du lecteur réseau
    		WSHNetwork.MapNetworkDrive lettre, chemin
    
    		' Renomage du lecteur
    		shell.namespace(lettre & "\").self.name=nom
    
    		' Détermination du code de retour
    		If err.number <> 0 Then 
    			monter_lecteur = "ERREUR" 
    		Else 
    			monter_lecteur =  "OK"
    		end if
    		
    	End Function
    		

    Limiter l'ouverture de session sur une station (logon)
    	'*************************************************************************
    	' Script de logon afin de limiter une seule ouverture de session sur une 
    	' seule machine
    	'
    	' 02/06/2008 - CCE
    	'*************************************************************************
    
    	' Déclaration des constantes
    	' -----------------------------------------------------------------------
    	Const Server_Name = "atos-fic"  ' nom du serveur
    	Const Share_Name = "logon$"     ' nom de partage
    
    	CRLF = Chr(13) & Chr(10)
    	Const ForReading = 1
    	Const ForAppending = 8
    
    		
    	' Declarations
    	' -----------------------------------------------------------------------
    	Set WshShell = WScript.CreateObject("WScript.Shell")
    	Set WshNetwork = WScript.CreateObject("WScript.Network")
    	Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    
    	Dim StrUserName  ' nom d'utilisateur actuel
    	Dim StrStrMachineName
    	Dim StrStrPathName
    	Dim StrStrMachineFile
    	Dim StrStrUserFile
    
    		
    	' Processus de contrôle
    	' -----------------------------------------------------------------------
    
    	StrUserName = ""
    
    	' Attente malice afin que l'utilisateur soit vraiment connecté
    	While StrUserName = ""
    		WScript.Sleep 100
    		' On récupère le nom d'utilisateur
    		StrUserName = WSHNetwork.UserName
    	Wend
    
    	' On récupère le nom de la machine
    	StrMachineName = WshNetwork.ComputerName
    
    	StrPathName = "\\" & Server_Name & "\" & Share_Name & "\" 
    
    	' On vérifie si un fichier portant le nom de l'utilisateur est présent
    	If ObjFSO.FileExists (StrPathName & StrUserName & ".txt") Then
    
    		' On ouvre le fichier afin de lire le contenu (nom de la station)
    		Set FicControle = ObjFSO.OpenTextFile(StrPathName & StrUserName & ".txt", 1)
    		StrMachineNameLogged = FicControle.ReadAll
    
    		' On affiche un message
    		message = "Votre compte a déjà une session ouverte sur la station " & StrMachineNameLogged & "et les connexions multiples sont interdites. Vous devez fermer votre session avant de vous connecter." & CRLF & CRLF & "Le système va maintenant fermer votre session."
    		WshShell.Popup  message,20,"Sécurité e-lorraine",vbOKonly
    		
    		' On ferme la session
    		WshShell.run "logoff.exe"
    
    	' Le fichier n'existe pas, l'utilisateur n'est pas connecté sur une autre machine
    	Else
    
    		' On crée le fichier avec le nom de la machine en contenu
    		Set StrUserFile = ObjFSO.CreateTextFile(StrPathName & StrUserName & ".txt")
    		StrUserFile.WriteLine StrMachineName
    		StrUserFile.Close
    		
    	End If
    		

    Limiter l'ouverture de session sur une station (logoff)
    	'*************************************************************************
    	' Script de logoff afin de limiter une seule ouverture de session sur une 
    	' seule machine
    	'
    	' 02/06/2008 - CCE
    	'*************************************************************************
    
    	' Déclaration des constantes
    	' -----------------------------------------------------------------------
    	Const Server_Name = "atos-fic"  ' nom du serveur
    	Const Share_Name = "logon$"     ' nom de partage
    
    
    	' Declarations
    	' -----------------------------------------------------------------------
    	Set WshShell = WScript.CreateObject("WScript.Shell")
    	Set WshNetwork = WScript.CreateObject("WScript.Network")
    	Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    
    	Dim StrUserName 		' nom d'utilisateur actuel
    	Dim StrMachineFile 
    	Dim StrPathName
    
    
    	' Processus de contrôle
    	' -----------------------------------------------------------------------
    
    	StrUserName = WSHNetwork.UserName ' On récupère le nom d'utilisateur
    	StrMachineName = WshNetwork.ComputerName ' On récupère le nom de la machine
    
    	StrPathName = "\\" & Server_Name & "\" & Share_Name & "\" 
    
    	'Destruction des fichiers si on ferme la bonne session sur la bonne machine
    	If ObjFSO.FileExists (StrPathName & StrUserName & ".txt") Then 
    		'Ouverture du fichier afin de déterminer le nom de la station
    		Set FicControle = ObjFSO.OpenTextFile(StrPathName & StrUserName & ".txt", 1)
    		' On supprime les caractères parasites
    		StrMachineNameLogged = Rtrim(FicControle.ReadAll)
    		' On ferme l'accès au fichier
    		FicControle.Close
    		' On compare les deux noms
    		If StrComp(StrMachineNameLogged,StrMachineName) Then
    			' On se trouve bien sur la bonne machine, on supprime le fichier
    			ObjFSO.DeleteFile (StrPathName & StrUserName & ".txt")
    		End If
    	End If
    		

Sauvegardes (scripts complets)
    Lancement d'une sauvegarde NTBACKUP avec rapport
    	'*************************************************************************
    	' Script de sauvegarde totale des données avec NTBACKUP. Ce script
    	' doit être exécuté sur le serveur de sauvegarde tout les dimanche
    	'
    	' 29/07/2008 - CCE
    	'*************************************************************************
    
    	' Pour mettre en mode debug, mettre en commentaire
    	On Error Resume Next
    
    
    	'------------------------------------------------------------------------
    	' Paramètres
    	'------------------------------------------------------------------------
    
    		destinataire = "xxx@domaine.com"
    		dossier_rapports = "C:\Documents and Settings\xxx\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data"
    
    	'------------------------------------------------------------------------
    	' Détermination de la semaine
    	'------------------------------------------------------------------------
    
    		dim arg(1), semaine
    
    		for i=0 to WScript.Arguments.Count-1
    			arg(i)=WScript.Arguments(i)
    	    next
    		
    		If WScript.Arguments.Count < 1 Then
    			msgbox("Vous devez indiquer le numéro de la semaine en argument (1, 2, 3 ou 4)")
    			Wscript.quit
    		Else
    			semaine = WScript.Arguments(0)
    		End If
    
    		' Semaine 1
    		If (semaine = "1") Then 
    			commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 1" & chr(34) & " /d " & chr(34) & "SEMAINE 1" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM1-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "194b0210-5c7f-4d5d-a31a-fd583273b795" & chr(34)
    		End If
    		
    		' Semaine 2
    		If (semaine = "2") Then 
    			commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 2" & chr(34) & " /d " & chr(34) & "SEMAINE 2" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM2-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "c646de42-860b-4ab6-9248-c95df756c9dd" & chr(34)
    		End If
    		
    		' Semaine 3
    		If (semaine = "3") Then 
    			commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 3" & chr(34) & " /d " & chr(34) & "SEMAINE 3" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM3-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "8e725511-036a-44d4-93ab-88a7179f229a" & chr(34)
    		End If
    		
    		' Semaine 4
    		If (semaine = "4") Then 
    			commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 4" & chr(34) & " /d " & chr(34) & "SEMAINE 4" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM4-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "ba54660f-464e-4948-a8db-c0bd0f3f5248" & chr(34)
    		End If
    		
    	'------------------------------------------------------------------------
    	' Déclaration des constantes
    	'------------------------------------------------------------------------
    		
    		Const ForReading = 1, ForWriting = 2, ForAppending = 8
    
    		Set fso = CreateObject ( "Scripting.FileSystemObject" )
    		Set WSHShell = WScript.CreateObject("WScript.Shell")
    		Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
    
    		
    	'------------------------------------------------------------------------
    	' Lancement de la sauvegarde NTBACKUP
    	'------------------------------------------------------------------------
    
    		message = "Rapport de sauvegarde sur bande des données e-lorraine." & VbCrLf & VbCrLf
    		message = message & "SEMAINE : " & semaine & VbCrLf & VbCrLf
    		message = message & "Début de la sauvegarde à : " & now & VbCrLf
    		datedebut = mid(date,7,4)& mid(date,4,2) & mid(date,1,2) & mid(time,1,2) & mid(time,4,2) & mid(time,7,2)
    		commande = "C:\WINDOWS\system32\ntbackup.exe backup " & commande_ntbackup
    		wshShell.Run commande,0,true
    		message = message & "Fin de la sauvegarde à   : " & now & VbCrLf & VbCrLf
    
    		
    	'------------------------------------------------------------------------
    	' Exploration du journal d'évènements
    	'------------------------------------------------------------------------
    		
    		message = message & "Messages de l'observateur d'évènements : " & VbCrLf
    		
    		' Attente de 3 secondes afin de laisser le temps à Windows d'écrire qq chose dans l'eventlog
    		WScript.Sleep 3000
    		
    		Set colItems = objWMIService.ExecQuery("Select EventType,TimeGenerated,message from Win32_NTLogEvent Where Logfile='Application' AND SourceName = 'NTBackup' AND EventType = '1'")
    		if isobject(colItems) then 
    			For Each objItem In colItems
    				if (objItem.TimeGenerated>datedebut) then
    					contenu=objitem.message
    					contenu=replace(contenu,chr(9),"",1,-1,1)
    					contenu=replace(contenu,chr(10),"",1,-1,1)
    					contenu=replace(contenu,chr(13),"",1,-1,1)
    					contenu=replace(contenu,"  "," ",1,-1,1)
    					message = message & mid(objItem.TimeGenerated,1,12) & " - " & contenu & VbCrLf
    			    end if
    			Next
    		End If
    		
    		message = message & VbCrLf & VbCrLf & VbCrLf
    		message = message & "Consultez le rapport en pièce jointe et archivez ce mail si aucun problème n'est à signaler. En cas d'erreur, contactez l'opérateur de sauvegarde."	
    		message = message & VbCrLf & VbCrLf & VbCrLf	
    		
    		message = message & "_________________" & VbCrLf
    		message = message & "E-Lorraine Supervision"
    
    		
    	'------------------------------------------------------------------------
    	' Envoi d'un mail
    	'------------------------------------------------------------------------
    
    	With CreateObject("CDO.Message") 
    		If Err Then
    			 MsgBox "CDO non installé" 
    		Else 
    			.From = "noreply@e-lorraine.net" 
    			.To = destinataire
    			.Subject = "[SAUVEGARDES] Rapport de sauvegarde"
    			.TextBody = message
    			.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    			.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.intranet.e-lorraine.net" 
    			.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
    			.Configuration.Fields.Update 
    			
    		' Recherche du rapport NTBACKUP afin de l'attacher en pièce jointe
    			Set fold_rapports = fso.GetFolder(dossier_rapports)
    			Set fold_sub_rapports = fold_rapports.files
    			For each fic_rapport in fold_sub_rapports
    				' Tout les fichiers qui ont été modifié il y a 30 minutes
    				calcul_date = (now*24*60*60)-(fic_rapport.datelastmodified*24*60*60)
    				If (calcul_date < 1800) then
    					.AddAttachment(dossier_rapports & "\" & fic_rapport.name)
    				End IF
    			Next
    			
    			' Envoi du mail
    			.Send 
    		End If 
    	End With
    		

    Sauvegarde de bases MySQL par DUMP
    	'*************************************************************************
    	' Script de sauvegarde des bases MySQL
    	'
    	' 16/07/2008 - CCE
    	'*************************************************************************
    
    	' Pour mettre en mode debug, mettre en commentaire
    	On Error Resume Next
    
    	'------------------------------------------------------------------------
    	'Déclaration des constantes
    	'------------------------------------------------------------------------
    
    		Const SQLUser = "root"  		' utilisateur SQL
    		Const SQLPassword = "zob"    	' mot de passe associé
    
    		' emplacement des binaires MySQL
    		Const PathSQL = "C:\Program Files\MySQL\MySQL Server 5.0\bin"
    		
    		' emplacement des sauvegardes
    		Const PathBACKUP = "D:\BK-SQL"
    
    
    	'------------------------------------------------------------------------
    	' Execution du backup
    	'------------------------------------------------------------------------
    
    			dump_base("wath")
    			dump_base("bath")
    
    	'------------------------------------------------------------------------	
    	' Fonctions de sauvegarde
    	'------------------------------------------------------------------------
    
    	Function dump_base(labase)
    
    		Set objFSO = CreateObject("Scripting.FileSystemObject")
    		Set WshShell = WScript.CreateObject("WScript.Shell")
    
    		' Calcul de la date
    		strDate = Year(date) & "-" & Right("0" & Month(date),2) & "-" & Right("0" & Day(date),2)
    		
    		' Calcul du directory final
    		strChemin = PathBACKUP & "\" & labase
    		
    		' Création du dossier si nécessaire
    		If not objfso.Folderexists(strChemin) then
    			objfso.CreateFolder(strChemin)
    		End If
    
    		' Exécution de la commande
    		WshShell.run Chr(34) & PathSQL & "\mysqldump.exe"  & Chr(34) & " -u " & SQLUser & " -p" & SQLPassword & " --databases " & labase & " -r " & Chr(34) & strChemin & "\" & labase & "-" & strDate & ".sql" & Chr(34), 0, True		
    		
    		' Supression des vieux fichiers
    		Set fold_dump = objFSO.GetFolder(strChemin)
    		Set fold_sub_dump = fold_dump.files
    		For each fic_dump in fold_sub_dump
    			If (fic_dump.datelastmodified) < (now-10) then
    				objFSO.DeleteFile(fic_dump)
    			End IF
    		Next
    		
    	End Function
    		
 © 2008 COLLE Christophe.
Conformément à la loi informatique et libertés, ce site ne collecte aucune information nominative. Les données 
susceptibles d´êtres stockées dans des cookies sont anonymes et à but uniquement statistique ou de navigation. 

Page générée en 0.09 seconde.