Startseite: Multimedia Blog > Admin > Deaktivierte User aus Active Directory auslesen – VB Script für deaktivierte Accounts

Deaktivierte User aus Active Directory auslesen – VB Script für deaktivierte Accounts

Schnelle Lösung zum Auslesen von deaktivierten Usern aus dem AD. VB Script liest deaktivierte AD Accounts aus und schreibt diese in eine Log Datei.

Als Admin werden oft Informationen aus dem AD benötigt. Heute möchte ich Euch ein kleines Script zeigen, mit dem Ihr deaktivierte Nutzer aus dem AD auslesen können. Das Script habe ich in VB geschrieben. Eine Powershell-Variante werde ich auch noch bereitstellen. Powershell lässt sich erst ab Server 2008 richtig einsetzen. Das VB Script könnt Ihr auch problemlos auf Server 2003 und 2008 laufen lassen.

VB Script deaktivierte User aus AD auslesen

In dem Script müsst Ihr nur die Domäne und die OU anpassen. Der Rest kann so übernommen werden.

 

‚Listet Konten auf, die deaktiviert sind
‚DM

Dim fso, f
Const ForReading = 1, ForWriting = 2
Const cLogFile = „Account_deaktiviert.txt“
Const cStrLdapUserOU = “ OU=Users and Groups,DC=domain,DC=local“
Const ADS_PROPERTY_APPEND = 3
Set WshNetwork = WScript.CreateObject(„WScript.Network“)
Set fso = CreateObject(„Scripting.FileSystemObject“)
set wshell=createobject(„Wscript.shell“)

readUserAttr
msgBox „fertig“

function readUserAttr
‚User aus dem AD auslesen
ADValues = getADQuerry(1)
end function

function Find_DeactiveUser(locDistinguishedName)
‚msgBox „LDAP://“ & locDistinguishedName
set strUserObj = GetObject(„LDAP://“ & locDistinguishedName)
On error resume next

‚Wenn Account deaktiviert
if strUserObj.UserAccountControl = 514 then
‚Logfile schreiben
DatenLogFile = “ Konto von Benutzer “ & „‚“ & strUserObj.sAMAccountName & „‚“ & “ ist deaktiviert. “ & „‚“ &strUserObj.UserAccountControl  & „‚“
writeLog DatenLogFile
end if

end function

function getADQuerry(QueryType)
‚***** ADODB-Verbindung einrichten
‚OU abfragen
Set Connection = CreateObject(„ADODB.Connection“)
Connection.Provider = „ADsDSOObject“
Connection.Open „Active Directory Provider“
‚ Abfrage formulieren
Set Command = CreateObject(„ADODB.Command“)
Command.ActiveConnection = Connection
‚Parameter
‚Command.Properties(„Timeout“) = 30 ’seconds
Command.Properties(„Page Size“) = 1000
Command.Properties(„searchscope“) = 2
Command.Properties(„Sort on“) = „Name“
‚Command.Properties(„Chase referrals“) = ADS_CHASE_REFERRALS_EXTERNAL
‚Command.Properties(„Cache Results“) = False ‚ do not cache the result, it results in less memory requirements
‚ ADsPath der Domaene ermitteln
Set objRoot = GetObject(„LDAP://rootDSE“)
ADsPath = objRoot.Get(„defaultNamingContext“)

Select case QueryType
‚User
case 1 tmpCategory = „select distinguishedName  from ‚LDAP://“ & cStrLdapUserOU & „‚ where objectCategory=’person‘ and  objectClass=’user'“

End Select

command.commandText = tmpCategory
Set rs = Command.Execute
if rs.recordCount > 0 then
Do Until rs.EOF
ListADUser = split(rs.GetString, vbCr,-1,1)
for each UserName in ListADUser
if Username <> „“ then
Find_DeactiveUser UserName
end if
next
Loop
end if

end function

‚*********************************************************************************
‚ Logfile schreiben
function writeLog(locValue1)
dim f
‚Logfile schreiben
set f = fso.OpenTextFile(cLogFile, 8, True)
f.WriteLine date & „;“ & Time & „;“ &locValue1
f.close
end function
‚*********************************************************************************



Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.