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