Top-Themen

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, 3107 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
Batch & Shell
Dateinamen mit vbs auslesen und in eine TXT Datei schreiben
gelöst Frage von KeiosIDBatch & Shell5 Kommentare

Hallo, ich hoffe mal, das ist das richtige Unterforum. Nach diversen suchen und Hilfe aus einem Windows Scripting Buch ...

Windows Userverwaltung
Domain User mit Batch Datei in .txt exportieren
gelöst Frage von corbieneWindows Userverwaltung24 Kommentare

Hallo, ich habe einen Auftrag erhalten und bin leider ein Neuling auf dem Gebiet, aus diesem Grund benötige ich ...

HTML
HTML-Formular: User-Eingabe in .txt-Datei speichern?
Frage von SchelinhoHTML2 Kommentare

Hallo community! Ich habe folgendes Anliegen: Ist es möglich, ohne PHP oder sonst was verwenden zu müssen, die Eingaben, ...

VB for Applications
VBS .txt Inhalt vor schreiben löschen
Frage von deathhollyVB for Applications8 Kommentare

Hallo, ich habe folgendes Script. Es funktioniert auch, nur das wenn ich es im Overwrite Modus öffne, schreibt es ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 11 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 13 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.