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

Benutzerdaten per Batch oder VB aus AD auslesen

Frage Microsoft Windows Server

Mitglied: ostseebenni

ostseebenni (Level 1) - Jetzt verbinden

23.05.2007, aktualisiert 24.05.2007, 14437 Aufrufe, 5 Kommentare

Hallo liebe Leute,

Nun Google ich schon seid 4h im Inet rum und finde einfach keine eindeutige Antwort.
Folgendes Problem:

Ein Benutzer ist mit seinem Clientpc an einem Active Directory angemeldet der seine gesamten benutzerdaten herausfindet.
Die Benutzerrechte liegen so dass der Benutzer keine Mails verschicken kann.
Er hat jedoch auch nicht die Möglichkeit einen Drucker anzuschließen um Dateien zu drucken.
Hierfür hab ich mir den PDFmailer heruntergeladen der die zu druckende Datei als Pdf speichert.
Nun soll per Batch oder VB oder ähnlichem eine Mail via CMD verschickt werden.
Und zwar an den angemeldeten User. Bei der nächsten Sitzung ist dies aber vll wieder ein ganz anderer User mit einer anderen Emailadresse sodass keine feste adresse als parameter angegeben kann.

Wie also lese ich aus den Userprofilen einer Ad einzelne Komponenten aus und speichere sie zur weiterverarbeitung in Variablen?

LG
Benni
Mitglied: gemini
23.05.2007 um 12:32 Uhr
Sorry, aber so ganz verstanden hab ich nicht, was du willst. Nur das eine Mail an unterschiedliche Adressaen per CMD versandt werden soll.
Evtl. solltest du die Satzstellung deines Postings nochmals überdenken.

Nun, ein Script das u.a. die Mailadresse ausliest:
List User Account General Page Properties

Zwei Scripte, das Mails verschicken können einmal mit, einmal ohne SMTP
Send Email from a Script
Send Email without Installing the SMTP Service
(Quellen: Microsoft TechNet Script Repository)

Blat, ein commandline mailer

HTH,
gemini
Bitte warten ..
Mitglied: ostseebenni
23.05.2007 um 13:12 Uhr
also eigentlich will ich nur die emailadresse des angemeldeten user auslesen und diese als empfängeradresse an den blat anhängen
Bitte warten ..
Mitglied: Biber
23.05.2007 um 22:32 Uhr
Moin ostseebenni,
also eigentlich will ich nur die emailadresse des angemeldeten user auslesen und diese als empfängeradresse an den blat anhängen
Aber gemini wollte Dich auch gar nicht zwingen, die Beispielskripte en bloc zu übernehmen....
Lösungsvorschlag:
Dann lies doch einfach nur die Mail-Adresse des angemeldeten Users aus, hänge diese als Empfängeradresse an das Blat an... und ignorier die anderen Infos einfach.

Oder besser: poste den Schnipsel, den Du Dir jetzt zusammengeCopy&Paste't hast und lass es uns gegenprüfen.

Gruß
Biber
Bitte warten ..
Mitglied: ostseebenni
24.05.2007 um 10:26 Uhr
01.
strLDAP = SAM2ADInfo("NilsK", "mail") 
02.
 
03.
function SAM2ADInfo(strSAMName, strField) 
04.
' Funktion: Übersetzt den übergebenen SAMAccountName per ADS-Abfrage in ein beliebiges ADS-Feld 
05.
' Eingabeparameter: strSAMName: Der NT-Anmeldename; strField: ADSI-Name des erwarteten Feldes 
06.
' Rückgabewert: Der gefundene Wert oder ein Leerstring 
07.
 
08.
    Dim objConn 
09.
    Dim objCommand 
10.
    dim objArgs 
11.
 
12.
    On Error Resume Next 
13.
 
14.
 
15.
    'Create ADO connection object for Active Directory 
16.
    Set objConn = CreateObject("ADODB.Connection") 
17.
    objConn.Provider = "ADsDSOObject" 
18.
    objConn.Open "Active Directory Provider" 
19.
    if checkit("Fehler beim ADO-Zugriff auf Active Directory!") then exit function 
20.
 
21.
    'Create ADO command object for the connection. 
22.
    Set objCommand = CreateObject("ADODB.Command")  
23.
    objCommand.ActiveConnection = objConn 
24.
    if checkit("Fehler beim Definieren des ADO-Kommandos!") then exit function 
25.
 
26.
    'Get the ADsPath for the domain to search. 
27.
    Set objRoot = GetObject("LDAP://rootDSE") 
28.
    strDomain = objRoot.Get("defaultNamingContext") 
29.
    Set objDomain = GetObject("LDAP://" & strDomain) 
30.
    if checkit("Fehler beim Ansprechen des Active Directory!") then exit function 
31.
 
32.
    'Abfrage 
33.
    strSQL = "SELECT " & strField & " FROM '" 
34.
    strSQL = strSQL & "LDAP://" & strDomain & "' WHERE sAMAccountName = '" & strSAMName & "'" 
35.
 
36.
    'Assemble the commandtext. 
37.
    objCommand.CommandText = strSQL 
38.
    if checkit("Fehler beim Übergeben des Kommandos!") then exit function 
39.
 
40.
    'Execute the query. 
41.
    Set objRS = objCommand.Execute 
42.
    if checkit("Fehler beim Ausführen der Suche im Active Directory!") then exit function 
43.
 
44.
    strOutput = "" 
45.
    strOutput = objRS.Fields(0).value 
46.
 
47.
    on error goto 0 
48.
 
49.
    SAM2ADInfo = strOutput 
50.
 
51.
end function 
52.
 
53.
 
54.
' Fehlerprüfung 
55.
function checkit(Nachricht) 
56.
	checkit = false 
57.
	if err.number <>0 then 
58.
		Nachricht = Nachricht & " [" & err.description & " (" & err.number & ")]" 
59.
                wscrip.echo Nachricht 
60.
		err.clear 
61.
		checkit=true 
62.
	end if 
63.
end function
Dieses Script habe ich aus einem andere Forum.
Meines eractens nach soll dies die Mailadresse auslesen.
Der Name des DC ist ctpdc in der domain ct.local, der wie ich denke bei Active Directory Provider eingetragen werden soll. Wo aber noch???
Zudem habe ich versucht das Script auszuführen jedoch die Rückmeldung eines Scriptfehler gleich am Anfang bekommen wie also führe ich dies aus und wie wird die VAriable an die Batch-Datei übergeben???
Bitte warten ..
Mitglied: Biber
24.05.2007 um 20:58 Uhr
Moin ostseebenni,

okay, dann lass uns aber bitte schrittweise vorgehen.
Wir haben nun zweieinhalb Tage gebraucht, um vom Thema "Benutzerdaten aus AD auslesen" im Bereich "Windows Server" wieder runterzukommen auf "Mailadresse des angemeldeten Users ermitteln".... da kommt es jetzt auf zwei Minuten mehr auch nicht an.

Zu "in anderen Foren gefundenen Scripten", die "Scriptfehler gleich am Anfang bekommen" möchte ich eigentlich jetzt nichts schreiben... das überlass ich mal Deiner Phantasie, was mir jetzt vielleicht auf der Zunge liegen könnte.

Eine kurzer biooptical scan, wie es in meiner Branche heißt, lässt zumindest zwei Sachen rot aufleuchten bei diesem Findelscript:

1.
In der Function checkit() ist die Zeile
01.
.... 
02.
wscrip.echo Nachricht
...etwas, was scho früher zu DOS-Interrupt-Zeiten bei M$ eine eigene Fehlernummer hatte:
"Error in the Errorhandler"
Ergänze dort mal das fehlende "t", also schreib "wscrip.echo Nachricht".
Dann bekommst Du auch einige der Fehler angezeigt.

2.
Is' sich ja schon fein, dass die ermittelte Mailaddy nun 5x von Variable zu Variable umkopiert wird, aber vielleicht solltest Du nach dem ermitteln auch irgendetwas damit machen....
Sogar einfach nur Anzeigen wäre schon eine Verbesserung.

Einmal grob durchgeharkt sieht der Schnipsel dann so aus:
01.
wscript.echo  SAM2ADInfo("NilsK", "mail") 
02.
' später mal:  wscript.echo  SAM2ADInfo(wscript.arguments(0), "mail") 
03.
'------ 
04.
function SAM2ADInfo(strSAMName, strField) 
05.
' Funktion: Übersetzt den übergebenen SAMAccountName per ADS-Abfrage  
06.
'                in ein beliebiges ADS-Feld 
07.
' Eingabeparameter: strSAMName: Der NT-Anmeldename;  
08.
'                                strField: ADSI-Name des erwarteten Feldes 
09.
' Rückgabewert: Der gefundene Wert oder ein Leerstring 
10.
 
11.
Dim objConn, objRS, objCommand 
12.
Dim objRoot, objDomain 
13.
On Error Resume Next 
14.
 
15.
'Create ADO connection object for Active Directory 
16.
Set objConn = CreateObject("ADODB.Connection") 
17.
objConn.Provider = "ADsDSOObject" 
18.
objConn.Open "Active Directory Provider" 
19.
if checkit("Fehler beim ADO-Zugriff auf Active Directory!") then exit function 
20.
 
21.
'Create ADO command object for the connection. 
22.
Set objCommand = CreateObject("ADODB.Command")  
23.
objCommand.ActiveConnection = objConn 
24.
if checkit("Fehler beim Definieren des ADO-Kommandos!") then exit function 
25.
 
26.
'Get the ADsPath for the domain to search. 
27.
Set objRoot = GetObject("LDAP://rootDSE") 
28.
strDomain = objRoot.Get("defaultNamingContext") 
29.
Set objDomain = GetObject("LDAP://" & strDomain) 
30.
if checkit("Fehler beim Ansprechen des Active Directory!") then exit function 
31.
 
32.
'Abfrage 
33.
strSQL = "SELECT " & strfield & " FROM '" 
34.
strSQL = strSQL & "LDAP://" & strDomain & "' WHERE sAMAccountName = '" & strSAMName & "'" 
35.
wscript.echo "[Debug1] " & StrSQL 
36.
'Assemble the commandtext. 
37.
objCommand.CommandText = strSQL 
38.
if checkit("Fehler beim Übergeben des Kommandos!") then exit function 
39.
 
40.
'Execute the query. 
41.
Set objRS = objCommand.Execute 
42.
if checkit("Fehler beim Ausführen der Suche im Active Directory!") then exit function 
43.
 
44.
Wscript.echo "[Debug2] " & objRS.Fields(strfield).value 
45.
SAM2ADInfo = objRS.Fields(strfield).value 
46.
on error goto 0 
47.
 
48.
end function 
49.
 
50.
' Fehlerprüfung 
51.
function checkit(Nachricht) 
52.
checkit = false 
53.
if err.number <>0 then 
54.
    Nachricht = Nachricht & " [" & err.description & " (" & err.number & ")]" 
55.
    wscript.echo Nachricht 
56.
    err.clear 
57.
   checkit=true 
58.
end if 
59.
end function
3.
...wobei die erste Zeile eigentlich später nicht heißen sollte..
01.
wscript.echo  SAM2ADInfo("NilsK", "mail") 
02.
' ...sondern...  
03.
wscript.echo  SAM2ADInfo(wscript.arguments(0), "mail")
denn dann kannst Du den Schnipsel aus einem Batch heraus aufrufen mit
01.
cscript //nologo getUsersMail.vbs %username% 
02.
:: ... und das Ganze noch mal einwickeln in eine FOR /F-Anweisung. 
03.
for /f %%i in ('cscript //nologo getUsersMail.vbs %username%') do set usersmail=%%i
Aber so weit sind wir noch nicht, bitte schau mal, wie weit Du jetzt mit der angepassten Skizze kommst und poste ggf. die Fehlermeldung.

Dann machen wir weiter.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Windows Userverwaltung
PS Skript AD Objekte auslesen (1)

Frage von m.reeger zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...