Bonjour,
Ça fait 2, 3 jours que je bosse sur ce script, il est censé servir a verifier toutes les dates de validité des comptes d'un OU, et ressortir ceux qui sont valide encore moins de 30 jours.
Mais voila, la solution que j'utilise et qui fonctionne avec un seul utilisateur, ne me renvoie AUCUNE info quand je l'utilise dans ce script.
Pourtant je pense avoir tout vérifié, mais quelques chose doit m'échapper.
Voila le script.
Et voila l'autre, qui celui la verifie seulement la date de validité du compte avec lequel on est connecté, et qui marche parfaitement (j'ai rajouté quelques MsgBox pour mes tests)
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 On Error Resume Next 'déclaration des variables (pas obligatoire e VBS) dim objfichier, myfile, Ouchoisi const forReading = 1, ForWritting = 2, ForAppending = 8 'routine de connexion a l'AD Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 'choix du domaine a éxaminer DomaineChoisi="mjs" 'inputbox ("veuillez Choisir le domaine que vous voulez inspecter","Choix du domaine") DomaineChoisi2="local" 'inputbox ("veuillez Choisir la fin du nom de domaine que vous voulez inspecter","Choix du domaine") OuChoisi="Administration" 'inputbox ("veuillez Choisir l'Unité d'organisation que vous voulez inspecter","Choix de l'OU") 'sélection de l'OU dans le domaine objCommand.CommandText = _ "SELECT AdsPath FROM 'LDAP://CN="& OuChoisi &", dc="& DomaineChoisi &", dc="& DomaineChoisi2 &"' WHERE objectCategory='user'" Set objRecordSet = objCommand.Execute 'création du fichier texte set objfichier = createobject("scripting.filesystemobject") NomFichier="OUexpir.csv" 'inputbox ("Veuillez entrez le nom de fichier","Nom du Fichier") set myfile = objfichier.opentextfile(NomFichier, forwritting, true) 'boucle qui vérifie les utilisateurs 1 par 1 objRecordSet.MoveFirst Do Until objRecordSet.EOF Set objUser = GetObject(objRecordSet.Fields("AdsPath").Value) 'condition, y a t'il une date de validité MsgBox objUser.AccountExpirationDate dtmAccountExpiration = objUser.accountExpires If dtmAccountExpiration <> "01/01/1601 02:00:00" Then Difference = dtmAccountExpiration - date ' Difference est la variable qui fait la difference entre les deux date (elle est inferieur ou superieur a 30) 'MsgBox objUser.AccountExpires,vbExclamation, "Avertissement" If 0 < Difference < 31 Then 'affiche le temps qu'il vous reste avant désactivation 'MsgBox "Votre compte expire le " & dtmAccountExpiration , vbExclamation, "Avertissement" Myfile.writeline objUser.SamAccountName & ";" & objUser.AccountExpirationDate & ";" & objuser.mail End If End If objRecordSet.MoveNext Loop 'message de fin d'éxecution du script MsgBox "votre recherche dans l'AD est terminée", vbExclamation, "Avertissement"
Si quelqu'un voit ou est le probleme dans le 1er script, ce serait sympa de me le dire, car j'ai beau l'avoir relu 10.000 fois et essayé de 10.000 manières différentes, j'ai toujours un fichier CSV vide a la fin ...
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 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = 2 Set WshNet = CreateObject("WScript.Network") User = WshNet.Username strUser = User ' sélection de l'objet USER objCommand.CommandText = "SELECT Name, ADsPath FROM 'LDAP://dc=mjs,dc=local' where name='" & strUser & "*' and objectCategory='user'" Set objRecordSet = objCommand.Execute If objRecordSet.RecordCount > 0 Then ' on associe l'user à une variable usrCN = objRecordSet.Fields("ADsPath").Value Set objUser = GetObject (usrCN) End If 'déclaration de la variable dtmAccountExpiration MsgBox objUser.AccountExpirationDate dtmAccountExpiration = objUser.AccountExpirationDate '1er condition (y'a t'il une date de validitéà) If dtmAccountExpiration <> "01/01/1601 02:00:00" Then Difference = dtmAccountExpiration - date ' Difference est la variable qui fait la difference entre les deux date (elle est inferieur ou superieur a 30) '2eme condition (vous reste t'il moins de 30 jours avant la désactivation de votre compte) If 0 < Difference < 31 Then 'affiche le temps qu'il vous reste avant désactivation MsgBox "Votre compte expire le " & dtmAccountExpiration , vbExclamation, "Avertissement" End If else MsgBox "Votre compte n'expire pas", vbExclamation, "Avertissement" End If MsgBox "FINI!!", vbExclamation, "Avertissement"
Partager