Script qui interroge les groupes et fais un cumul pour l’ensemble

naiik - 29 avril 2013 à 17:39
Bonjour

je suaite modifier un script qui interroge les groupes suivants :
Rle-VPN-S
Rle-VPN-M
Rle-VPN-D
Rle-VPN-Ct

Pour chaque groupe, il doit sortir : nom du groupe, nombre de membres dont les comptes sont actifs
Faire un cumul pour l’ensemble et sortir un total à la fin du nombre d’accès VPN en testant si > 650 et en émettant une alerte si c’est le cas.

le code a adapter est le suivant :

On Error Resume Next
 
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 
 
objCommand.CommandText = _
    "SELECT ADsPath, FROM 'LDAP://' WHERE objectCategory='group''"  
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
 
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fileLog = FSO.OpenTextFile("C:\Test\listgroups_complet.txt", 8, True)
 
'PostLog("AccountName;DisplayName;FirstName;LastName;Description;Disabled;ExpirationDate;Locked")
 
Do Until objRecordSet.EOF
     strPath = objRecordSet.Fields("ADsPath").Value
 
     Set objGroup = GetObject(strPath)
 
     objGroup.GetInfo
 
     objGroup.GetInfoEx Array("primaryGroupToken"), 0
     sPrimaryGroupToken = objGroup.primaryGroupToken
 
     wscript.echo objGroup.Name
 
'Ajout reinitialisation variable
     arrMemberOf = Null
     arrMemberOf = objGroup.GetEx("member")
     If arrMemberOf <> Null Then
      	For Each strMember in arrMemberOf
        set objUser = GetObject ("LDAP://" & strMember)
sClass = objUser.Class
sSAMAccountName = objUser.sAMAccountName
sDescription = objUser.Description
sDisplayName = objUser.DisplayName
dtmAccountExpiration = objUser.AccountExpirationDate 
strExpirationDate = ""
If Err.Number -2147467259 Or dtmAccountExpiration "01/01/1970" or dtmAccountExpiration = "01/01/1601 02:00:00" or dtmAccountExpiration = "01/01/1601 01:00:00" Then
     strExpirationDate = "None"
Else
     strExpirationDate = objUser.AccountExpirationDate
End If
strAccountDisabled = ""
strAccountDisabled = objUser.AccountDisabled
'	wscript.echo strMember
sDomain = Right(strMember,Len(StrMember)-InStr(strMember,"DC=")-2)
'	wscript.echo sDomain
sDomain = Left(sDomain, InStr(sDomain,",")-1)
'	wscript.echo sDomain
fileLog.WriteLine objGroup.Name & ";" & sPrimaryGroupToken & ";" & sDomain & ";" & sClass & ";" & sSAMAccountName & ";" & sDescription & ";" & sDisplayName & ";" & strExpirationDate & ";" & strAccountDisabled & ";" & strMember
        Next
    End If
    objRecordSet.MoveNext
Loop
 
fileLog.Close
 
Set fileLog = FSO.OpenTextFile("C:\Test\listgroups_complet.flag", 8, True)
fileLog.WriteLine "fin"
FileLog.Close
 
Wscript.quit
 
'=============================================================================================================
Sub PostLog(sItem)
'=============================================================================================================
'   ***********
'   * Fichier LOG
'   ***********
On Error Resume Next
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fileLog = FSO.OpenTextFile("C:\Test\listusers.txt", 8, True)
fileLog.WriteLine sItem
fileLog.Close
Err.Clear
End Sub
 
'=============================================================================================================
Sub Listmembers(sItem, sGroupName)
'=============================================================================================================
'wscript.echo sItem
Set objGroup = GetObject ("LDAP://" & sItem)
objGroup.GetInfo
 
arrMemberOf = objGroup.GetEx("member")
 
For Each strMember in arrMemberOf
    set objUser = GetObject ("LDAP://" & strMember)
    sItem = sGroupName & ";" & objUser.sAMAccountName
    fileLog.WriteLine sItem
Next
End Sub


Merci pour votre aide