Date de validite de compte d'une OU
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.
Code:
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" |
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:
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" |
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 ...