Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 5038 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 ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows Server
gelöst Wie AD User sauber löschen? (34)

Frage von McLion zum Thema Windows Server ...

Batch & Shell
CSV durchsuchen und löschen (3)

Frage von leonmm zum Thema Batch & Shell ...

VB for Applications
gelöst Vbscript bestimmte Zeile ungeachtet der Nummerierung löschen (4)

Frage von aletri zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...