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

Alle User aus dem AD in txt-Datei mittels .vbs

Frage Microsoft Windows Server

Mitglied: dabaeuml

dabaeuml (Level 1) - Jetzt verbinden

25.01.2012 um 14:43 Uhr, 3105 Aufrufe, 6 Kommentare

Hallo liebe Administrator-Gemeinde,

habe ein "kleines" Problem mit einer vbScript, welche mir bestimmte Parameter jeden Users im AD, auslesen soll...
Das Script funktioniert soweit, allerdings bekomme ich es nicht hin, dass ich alle User "ausgeworfen" bekomme, sondern ich müsste nach jedem einzeln suchen...

Hier das Script:


01.
Option Explicit 
02.
 
03.
Const C_User = "LDAP://CN=Test,OU=IT,DC=Test,DC=de" 
04.
Const C_Log = "C:\test.log" 
05.
 
06.
Dim O_User 
07.
Dim O_FSO 
08.
Dim O_Log 
09.
 
10.
Set O_User = GetObject(C_User) 
11.
Set O_FSO = CreateObject("Scripting.FileSystemObject") 
12.
Set O_Log = O_FSO.OpenTextFile(C_Log,2,True) 
13.
 
14.
O_Log.writeline C_User 
15.
O_Log.writeline "" 
16.
 
17.
'O_User.GetInfo 
18.
 
19.
O_Log.writeline "CN: " & O_User.cn 
20.
O_Log.writeline "Firma: " & O_User.company 
21.
O_Log.writeline "Vorname: " & O_User.GivenName 
22.
O_Log.writeline "Nachname: " & O_User.sn 
23.
O_Log.writeline "Mail-Adresse: " & O_User.Mail 
24.
O_Log.writeline "AD-Name: " & O_User.Name 
25.
O_Log.writeline "sAMAccount: " & O_User.sAMAccountName 
26.
O_Log.writeline "User-Principal-Name: " & O_User.userPrincipalName 
27.
 
28.
O_Log.writeline "" 
29.
 
30.
If O_User.IsAccountLocked = True Then 
31.
	O_Log.writeline "Account gesperrt: JA" 
32.
Else 
33.
	O_Log.writeline "Account gesperrt: Nein" 
34.
End If 
35.
If O_User.userAccountControl And 2 Then 
36.
	O_Log.writeline "Account deaktiviert: JA" 
37.
Else 
38.
	O_Log.writeline "Account deaktiviert: Nein" 
39.
End If

Bei mir hackt es hier an der Variablen "jeder User"...
Könnt ihr mir da weiterhelfen???


Vielen Dank schon einmal für eure Hilfe...
Mitglied: bastla
25.01.2012 um 14:55 Uhr
Hallo dabaeuml und willkommen im Forum!

Im "Script Center"
http://gallery.technet.microsoft.com/scriptcenter/site/search?f[0].Type=RootCategory&f[0].Value=activedirectory&f[0].Text=Active%20Directory&f[1].Type=SubCategory&f[1].Value=useraccounts&f[1].Text=Benutzerkonten&pageIndex=1
sollte sich doch etwas Passendes (zB das) als Anhaltspunkt finden lassen (auch wenn dort nicht "VBS", sondern "VB.NET" steht) ...

Grüße
bastla
Bitte warten ..
Mitglied: dabaeuml
25.01.2012 um 15:31 Uhr
Hallo bastla,

Danke für die schnelle Info...

Leider hilft mir auch dieser Ansatz nicht viel weiter...
(hab nicht wirklich viel Ahnung vom scripten)... /
Bitte warten ..
Mitglied: bastla
25.01.2012 um 19:14 Uhr
Hallo dabaeuml!

Da das verlinkte Script etwas schütter kommentiert ist, hole ich es mal rüber und gebe etwas Senf dazu (das Testen überlasse ich aber Dir ):
01.
'* Original von: http://gallery.technet.microsoft.com/scriptcenter/1e3eca73-21c5-4ee4-9bb0-e43ed138aec7 
02.
'* 
03.
'* description: export users from Active Directory to a comma separated text file.  
04.
'*  Use the text file to create users in a new AD with the accompanying import script.  
05.
'*                
06.
'* author: Chris Pilling  
07.
'* date: 18 June 2008  
08.
'* edit the attributes exported to suit  
09.
'* after running it is probably best to delete lines from the text file for system generated accounts  
10.
   
11.
Zieldatei = "C:\test.log" 
12.
Delim = ";" ' Trennzeichen für Felder in der Zieldatei (im Original ",") 
13.
   
14.
Const ForAppending = 8  
15.
   
16.
Set objRoot = GetObject("LDAP://RootDSE")     ' \  
17.
strDNC = objRoot.Get("DefaultNamingContext")  '  |-> Objekt für Domain-Root als Ausgangspunkt erstellen 
18.
Set objDomain = GetObject("LDAP://" & strDNC) ' / 
19.
 
20.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
21.
   
22.
Call enumMembers(objDomain) ' Aufruf der eigentlichen Verarbeitungsschleife 
23.
'  Wenn ab einer bestimmten OU begonnen werden soll, oben zB mit 
24.
'Set objDomain = GetObject("LDAP://OU=IT,DC=Test,DC=de") 
25.
' diese OU vorgeben ... 
26.
 
27.
'Ende Hauptprogramm 
28.
 
29.
Sub enumMembers(objDomain) ' Unterprogramm, das für jeden Container / jede OU aufgerufen wird 
30.
On Error Resume Next 'Fehler werden uns nicht stoppen! ;-) 
31.
   
32.
For Each objMember In objDomain ' alle Objekte durchgehen 
33.
    If objMember.Class = "user" Then ' verarbeiten, wenn es ein "User"-Objekt ist 
34.
        '* edit the attributes you want to export here - von den folgenden Zeilen nur jene 
35.
        '  behalten, die benötigt werden (die übrigen auskommentieren oder löschen) und 
36.
        '  fehlende Zeilen (wie zB für "company") ergänzen -  
37.
        '  entsprechend dann auch unten die Erstellung des Datensatzes anpassen 
38.
		 
39.
        If Not(IsEmpty(objMember.samAccountName)) Then   
40.
            samAccountName = objMember.samAccountName   
41.
        Else   
42.
            samAccountName = ""   
43.
        End If  
44.
        If Not(IsEmpty(objMember.CN)) Then Cn = objMember.CN Else Cn = "" End If  
45.
        If Not(IsEmpty(objMember.GivenName)) Then FirstName =objMember.GivenName Else FirstName = "" End If  
46.
        If Not(IsEmpty(objMember.sn)) Then Lastname = objMember.sn Else LastName = "" End If  
47.
        If Not(IsEmpty(objMember.UserPrincipalName)) Then   
48.
            UserPrincipalName = objMember.UserPrincipalName   
49.
        Else   
50.
            Name = ""   
51.
        End If  
52.
        If Not(IsEmpty(objMember.ProfilePath)) Then   
53.
            ProfilePath = objMember.ProfilePath   
54.
        Else   
55.
            Profile = ""   
56.
        End If  
57.
        If Not(IsEmpty(objMember.HomeDrive)) Then HomeDrive = objMember.HomeDrive Else HomeDrive = "" End If  
58.
        If Not(IsEmpty(objMember.HomeDirectory)) Then   
59.
            HomeDirectory = objMember.HomeDirectory   
60.
        Else   
61.
            HomeDirectory = "" 
62.
        End If  
63.
        If Not(IsEmpty(objMember.ScriptPath)) Then 
64.
            LoginScript = objMember.ScriptPath 
65.
        Else   
66.
            LoginScript = ""   
67.
        End If  
68.
 
69.
        ' ab jetzt stehen alle oben ausgelesenen Werte in den entsprechenden Variablen zur Verfügung 
70.
		 
71.
        'Datensatz zusammenstellen, im Original Komma als Trennzeichen, in der adaptierten Fassung das oben per Variable festgelegte ";" 
72.
        ' Original-Zeile:  
73.
        strText1 = SamAccountName & "," & CN & "," & FirstName & "," & LastName & "," & UserPrincipalName & _  
74.
            "," & ProfilePath & "," & HomeDrive & "," & HomeDirectory & "," & LoginScript 
75.
        ' adaptiert: 
76.
        strText1 = SamAccountName & Delim & CN & Delim & FirstName & Delim & LastName & Delim & UserPrincipalName & _  
77.
            Delim & ProfilePath & Delim & Homedrive & Delim & HomeDirectory & Delim & LoginScript 
78.
	 
79.
        'WScript.Echo strText1 ' Ausgabe des Datensatzes in der Konsole (wenn über "cscript" gestartet; zu empfehlen) oder als MsgBox  
80.
  
81.
        Set objTextFile = objFSO.OpenTextFile(Zieldatei, ForAppending, True) ' Textdatei zum Anfügen (des neuen Satzes / der neuen Zeilen) öffnen 
82.
        objTextFile.WriteLine(strText1) ' Datensatz in Textdatei schreiben und 
83.
 
84.
        '### hier Deinen Ausgabecode als Ersatz für die einzeilige Version mit strText1 platzieren, also etwa: 
85.
        'objTextFile.WriteLine objMember.ADSPath 
86.
        'objTextFile.WriteLine 
87.
        'objTextFile.WriteLine "CN: " & Cn 
88.
        ' ... 
89.
        ' #### 
90.
 
91.
        objTextFile.Close                ' Zieldatei wieder schließen 
92.
 
93.
    End If   
94.
    
95.
    If objMember.Class = "organizationalUnit" or objMember.Class = "container" Then  ' Ist das Objekt ein Container / eine OU ... 
96.
        enumMembers (objMember)  ' ... das Unterprogramm (rekursiv) aufrufen, um dieses Objekt abzuarbeiten 
97.
    End If   
98.
Next   
99.
End Sub
Aufgrund des "On Error Resume Next" ließen sich die Zeilen der Art
If Not(IsEmpty(objMember.CN)) Then Cn = objMember.CN Else Cn = "" End If
auch auf
Cn = "" : Cn = objMember.CN
vereinfachen.

Grüße
bastla
Bitte warten ..
Mitglied: dabaeuml
26.01.2012 um 09:07 Uhr
Hervorragend, ich glaube genau sowas habe ich gesucht..
Werde mich gleich mal darüberstürzen....


Eine Frage hab ich zumindest schon mal...
Warum nimmst du mal "If Not" und dann mal wieder "If" her??

Gruß
dabaeuml
Bitte warten ..
Mitglied: dabaeuml
26.01.2012 um 09:34 Uhr
Hallo bastla,

Super, habe das Skript bissl abgeändert und es funktioniert so wie ich es haben möchte...

DANKESCHÖÖÖÖN...
Bitte warten ..
Mitglied: bastla
26.01.2012 um 09:50 Uhr
Hallo dabaeuml!
Warum nimmst du mal "If Not" und dann mal wieder "If" her??
Ich war das doch gar nicht ...

"Not" ist ja nur eine "Verneinung" und kehrt einfach die Fragestellung um -
If Not(IsEmpty(objMember.CN)) Then ...
heißt dann eben "Wenn der Rückgabewert von objMember.CN nicht leer ist" oder, einfacher, wenn objMember.CN einen Rückgabewert liefert, dann ...

Da es keine Funktion "IsFull()" gibt, muss eben nach dem Gegenteil gefragt werden (an doppelte Verneinungen gewöhnt man/frau sich mit der Zeit) ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Wird ein Cloud-User durch AD-Sync überschrieben (2)

Frage von olimo zum Thema Microsoft Office ...

Batch & Shell
Per Batch eine XLS-Datei in eine TXT-Datei umwandeln (5)

Frage von skiing69 zum Thema Batch & Shell ...

VB for Applications
gelöst If exist - if not exist in .vbs - Datei (24)

Frage von Komoran12 zum Thema VB for Applications ...

HTML
HTML-Formular: User-Eingabe in .txt-Datei speichern? (2)

Frage von Schelinho zum Thema HTML ...

Neue Wissensbeiträge
Viren und Trojaner

Link: Neues Botnetz über IoT-Geräte

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
Frage zu Server Rack (11)

Frage von rainergugus zum Thema Windows Server ...

Windows Installation
Windows 10 neu installieren (10)

Frage von imebro zum Thema Windows Installation ...

Switche und Hubs
gelöst VLAN für Gäste WLAN einrichten über FritzBox und Switch (10)

Frage von Elo-14 zum Thema Switche und Hubs ...