llaprosper
Goto Top

LDAP Script als Textdatei ausgeben

Ich habe hier eine Script, welches mir deaktivierte Konten im AD anzeigt. Nur muß ich jede einzelne Nachricht mit OK bestätigen.
Ich hätte gerne, das mir alle User in einer Textdatei abgelegt werden, kenne mich aber 0,0 mit Script aus. Kann mir da jemand helfen?
Das Scribt sieht so aus:

Const ADS_UF_ACCOUNTDISABLE = 2

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<GC://dc=xxxx,dc=com>;(objectCategory=User)" & _
";userAccountControl,distinguishedName;subtree"
Set objRecordSet = objCommand.Execute

intCounter = 0
Do Until objRecordset.EOF
intUAC=objRecordset.Fields("userAccountControl")
If intUAC AND ADS_UF_ACCOUNTDISABLE Then
WScript.echo objRecordset.Fields("distinguishedName") & " is disabled"
intCounter = intCounter + 1
End If
objRecordset.MoveNext
Loop

WScript.Echo VbCrLf & "A total of " & intCounter & " accounts are disabled."

objConnection.Close

Content-Key: 29707

Url: https://administrator.de/contentid/29707

Printed on: April 25, 2024 at 10:04 o'clock

Member: ketchup
ketchup Apr 04, 2006 at 17:57:34 (UTC)
Goto Top
hi


rufst du das script zufällig mit wscript bzw. direkt als XXX.vbs auf?

probier einfach "cscript XXX.vbs" aus.
und stell danach den standard scripter auf cscript (cscript /h:cscript)
dabei kannst den output umleiten "> textfile"

ansonsten müsstest du dich mit File-Objects beschäftigen.

j.
Member: Biber
Biber Apr 04, 2006 at 18:03:13 (UTC)
Goto Top
Moin IIaprosper,

Da siehst Du mal, was Skripte ohne Doku taugen ...*gg

Aber ich bewundere immerhin Deinen Mut, ein Skript zu starten, bei dem Du nicht genau weißt, was da abgeht - von solchen Usern lebe auch ja auch *feix*.

Starte Dein Skript "irgendwoGefunden.vbs" nicht Durch Doppelklick, sondern vom CMD-Prompt oder über eine Batchdatei mit der Zeile:
cscript //nologo c:\woauchimmer\irgendwoGefunden.vbs >>c:\logs\DeactivatedUsers.log

...wobei "c:\logs\DeactivatedUsers.log" die Textdatei ist, wo dann dieser User aufgelistet sind.
c:\logs muss existieren und Pfad und Name "c:\woauchimmer\irgendwoGefunden.vbs" muss Du auch anpassen.
Wenn dann diese erste Runde geklappt hat, lies Dich mindestens zu den WScript/CSkript-Unterschieden in der Windows-eigenen Hilfe ein und hangele Dich von dort an weiter.

Gruß
Biber
Member: Dani
Dani Apr 04, 2006 at 18:22:21 (UTC)
Goto Top
Hi,
möchtest du den Benutzername in der TXT haben oder den normalen Namen?
Ich kann es dir umschreiben....

Gruß
Dani
Member: llaprosper
llaprosper Apr 05, 2006 at 05:32:43 (UTC)
Goto Top
@Dani
Ich bräuchte den normalen Namen!


@Biber
Das ist ein Script von Microsoft und dort stand natürlich wofür es ist! Soviel Mut habe ich dann doch nicht face-wink
Member: Dani
Dani Apr 05, 2006 at 05:41:33 (UTC)
Goto Top
G' Morgen,
probier's mal mit folgenden Zeilen:

Const ADS_UF_ACCOUNTDISABLE = 2
	Const ADS_UF_PASSWORD_EXPIRED = &h800000
	Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
	Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"  


	Set objHash = CreateObject("Scripting.Dictionary")  
	objHash.Add "ADS_UF_DONT_EXPIRE_PASSWD", &h10000  

	Set objConnection = CreateObject("ADODB.Connection")  
	objConnection.Open "Provider=ADsDSOObject;"  
	Set objCommand = CreateObject("ADODB.Command")  
	objCommand.ActiveConnection = objConnection

	objCommand.Properties("Page Size") = 1000  
	objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE   
	
	'#############################################################  
	'Dekl. für das schreiben der Textdatei  
	'#############################################################  
	Dim fso
	Dim TF
	
	Set fso = CreateObject("Scripting.FileSystemObject")  
	Set TF = FSO.OpenTextFile("C:\benutzer.txt",8, True)  

objCommand.CommandText = _
    "<GC://" & arrFileLines(l) & ">;(objectCategory=User)" & _  
        ";userAccountControl,distinguishedName,cn;subtree"  

Set objRecordSet = objCommand.Execute
Do Until objRecordset.EOF
 intUserAccountControl = objRecordset.Fields("userAccountControl")  
 If NOT intUserAccountControl AND ADS_UF_ACCOUNTDISABLE Then
    For Each Key In objHash.Keys 		
    
	'#############################################################  
	'Auslesen der Infos und erzeugen des Excelinhalts  
	'#############################################################  
    set objuser = getObject ("LDAP://" & objRecordset.Fields("distinguishedName").value)  
		
	TF.WriteLine(objuser.distinguishedName)
  	 
	Next
    End If
   	objRecordset.MoveNext
	 
	Loop

objConnection.Close
TF.Close 

Diese Zeile noch anpassen:
Set TF = FSO.OpenTextFile("C:\benutzer.txt",8, True)


Gruß
Dani
Member: llaprosper
llaprosper Apr 05, 2006 at 06:29:21 (UTC)
Goto Top
Guten Morgen Dani,

erst mal Danke für Deine Hilfe.
Leider klaapt das Script nicht!

Zeile:26
Zeichen:1
Fehler: Typen unverträglich: arrFileLines
Code: 800A000D
Quelle: Laufzeitfehler in Microsoft VBScript

live long and prosper
Member: Dani
Dani Apr 05, 2006 at 06:57:53 (UTC)
Goto Top
Hi,
hast du noch die Datei "ou.txt". Die ist nämlich für das Script wichtig!!!


GRuß
DAni
Member: llaprosper
llaprosper Apr 05, 2006 at 07:24:34 (UTC)
Goto Top
Na ja, ich hab´zwar noch ne OU.txt, aber was soll da drinne stehen?
Member: Dani
Dani Apr 05, 2006 at 07:36:32 (UTC)
Goto Top
Hi,
schick mir bitte mal die 2 Dateien an administrator@familie-wydler.de

Danke!

Gruß
DAni