Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBScript AD durchsuchen und Verzeichnisleichen löschen

Frage Entwicklung VB for Applications

Mitglied: zmankay

zmankay (Level 1) - Jetzt verbinden

02.07.2008, aktualisiert 03.07.2008, 5059 Aufrufe, 2 Kommentare

Hallo,

ich habe ein Script welches mir in einer AD alle Verzeichnisse löscht, die keinem Benutzer mehr zugeordnet sind. Nun möchte ich aber, dass ich nicht mehr jedesmal die OU angeben muss in dem das Script suchen muss, sondern möchte dass das Script auf der gesamten AD sucht. Dies hätte den Vorteil, dass ich beliebig viele OUs mit Benutzern anlegen kann und das Script nur einmal ausführen muss und nicht ständig an die OU anpassen.

Leider fehlt mir hier absolut der Ansatz, wie ich danach suchen soll, bzw. wie ich eine solche Suche erstelle. Wenn ich unten die OU einfach weglasse, dann sucht mir das Script zwar auf dem Base Level der AD, löscht aber logischerweise alle Verzeichnisse, weil ja auf dem Level keine Benutzer existieren.

Wenn ich nur eine OU angebe, löscht er mir folglich auch die Verzeichnisse von Benutzern aus einer anderen OU.

Es wäre toll, wenn mir jemand eine Idee, oder sogar Lösung für das Problem hat.

Danke

<code>

Const strDomainOU = "LDAP://OU=test, DC=ads,DC=test,DC=local"

Const strDomainPath = "LDAP://OU=test, DC=ads,DC=test,DC=local"
Const strLDAPHead = "LDAP://"
Const strDomain = ",OU=test, DC=ads,DC=test,DC=local"
Const strHomeDirRoot = "\\server\home$\"


/code>
Mitglied: bastla
02.07.2008 um 21:25 Uhr
Hallo zmankay!

Wenn sich Dein Problem auf "Finde alle AD-Benutzer" reduzieren lässt, gäbe es etwa folgende Lösung: Find all users (VBScript)

Anderer Ansatz: List all users and some of their properties in a Windows 2000 AD domain or Windows NT4 domain

Grüße
bastla
Bitte warten ..
Mitglied: zmankay
03.07.2008 um 14:55 Uhr
Das "Finde alle AD-Benutzer" Script ist schon eine gute Sache. Nun ist es aber so, dass ich hier auf einem für mich völlig neuen Gebiet bin.

Ich will das Script

01.
' ------ SCRIPT CONFIGURATION ------ 
02.
strDomainDN = "<DomainDN>"    ' e.g. dc=rallencorp,dc=com 
03.
' ------ END CONFIGURATION --------- 
04.
 
05.
strBase   =  "<LDAP://" & strDomainDN & ">;" 
06.
' To search the whole forest using the global catalog, uncomment the following line: 
07.
' strBase   =  "<GC://" & strDomainDN & ">;" 
08.
 
09.
strFilter = "(&(objectclass=user)(objectcategory=person));"  
10.
strAttrs  = "name;" 
11.
strScope  = "subtree" 
12.
 
13.
set objConn = CreateObject("ADODB.Connection") 
14.
objConn.Provider = "ADsDSOObject" 
15.
objConn.Open "Active Directory Provider" 
16.
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope) 
17.
objRS.MoveFirst 
18.
while Not objRS.EOF 
19.
    Wscript.Echo objRS.Fields(0).Value 
20.
    objRS.MoveNext 
21.
wend
mit meinem Löschskript kombinieren.

01.
 
02.
Const strDomainOU		= "LDAP://OU=test,DC=ads,DC=test,DC=local" 
03.
Const strHomeDirRoot    	= "\\server\home$\" 
04.
 
05.
 
06.
' Bind to Domain. Create Array of Users. 
07.
 
08.
Set objDomain = GetObject(strDomainOU) 
09.
objDomain.Filter=Array("user") 
10.
 
11.
' Output error if bind fails. 
12.
If Err.Number <> vbEmpty Then 
13.
    WScript.Quit 
14.
End If 
15.
 
16.
set objFileSystem = CreateObject("Scripting.FileSystemObject") 
17.
set objFolder = objFileSystem.GetFolder(strHomeDirRoot) 
18.
 
19.
'Check every folder for existing user 
20.
 
21.
For Each objSubFolder in objFolder.SubFolders 
22.
 
23.
    bool = false   			'No existing user  
24.
 
25.
     For Each objUser in objDomain	 
26.
         If objSubFolder.Name=objUser.sAMAccountName then 
27.
         bool=true					        'Folder match User  
28.
         End If 
29.
     Next    ' End of objUser 
30.
         
31.
     'check for matched user  
32.
     if not bool then 
33.
        set objDeleteFileSystem = CreateObject("Scripting.FileSystemObject")  
34.
        set objDeleteFolder = objFileSystem.GetFolder(strHomeDirRoot&objSubFolder.Name) 
35.
'	Wscript.Echo("Folder gelöscht:" & objDeleteFolder.Name) 
36.
        objDeleteFolder.Delete true      
37.
     End If 
38.
 
39.
 
40.
Next    ' End of objSubFolder
Ich würde gerne wissen, wo ich da ansetzen muss, dass es funktioniert. Zum Beispiel die Benutzer in ein Array übergegen und das Array an das andere Script, oder beide ineinander packen?. Nur wie, das ist die große Frage.

Danke für Eure Hinweise.
Bitte warten ..
Ähnliche Inhalte
Windows Userverwaltung
gelöst AD-Benutzer löschen (3)

Frage von Peterz zum Thema Windows Userverwaltung ...

Microsoft Office
Unterordner durchsuchen Excel VBA (1)

Frage von schwalbepilot zum Thema Microsoft Office ...

VB for Applications
gelöst VBScript und OR (5)

Frage von Invisan zum Thema VB for Applications ...

Microsoft Office
gelöst Outlook VBScript (5)

Frage von Nebellicht zum Thema Microsoft Office ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Server
Bilder aus dem Web mit CSV runterladen (30)

Frage von Yannosch zum Thema Server ...

LAN, WAN, Wireless
Gebäudeverkabelung 10Gigabit LWL (27)

Frage von raffzwo zum Thema LAN, WAN, Wireless ...

Windows Update
Novemberpatches und Nadeldrucker bereiten Kopfschmerzen (14)

Tipp von MettGurke zum Thema Windows Update ...