Benutzerdaten per Batch oder VB aus AD auslesen
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 59601
Url: https://administrator.de/contentid/59601
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
5 Kommentare
Neuester Kommentar
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
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
Moin ostseebenni,
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
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
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
...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:
3.
...wobei die erste Zeile eigentlich später nicht heißen sollte..
denn dann kannst Du den Schnipsel aus einem Batch heraus aufrufen mit
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
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
....
wscrip.echo Nachricht
"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:
wscript.echo SAM2ADInfo("NilsK", "mail")
' später mal: wscript.echo SAM2ADInfo(wscript.arguments(0), "mail")
'------
function SAM2ADInfo(strSAMName, strField)
' Funktion: Übersetzt den übergebenen SAMAccountName per ADS-Abfrage
' in ein beliebiges ADS-Feld
' Eingabeparameter: strSAMName: Der NT-Anmeldename;
' strField: ADSI-Name des erwarteten Feldes
' Rückgabewert: Der gefundene Wert oder ein Leerstring
Dim objConn, objRS, objCommand
Dim objRoot, objDomain
On Error Resume Next
'Create ADO connection object for Active Directory
Set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
if checkit("Fehler beim ADO-Zugriff auf Active Directory!") then exit function
'Create ADO command object for the connection.
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConn
if checkit("Fehler beim Definieren des ADO-Kommandos!") then exit function
'Get the ADsPath for the domain to search.
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = objRoot.Get("defaultNamingContext")
Set objDomain = GetObject("LDAP://" & strDomain)
if checkit("Fehler beim Ansprechen des Active Directory!") then exit function
'Abfrage
strSQL = "SELECT " & strfield & " FROM '"
strSQL = strSQL & "LDAP://" & strDomain & "' WHERE sAMAccountName = '" & strSAMName & "'"
wscript.echo "[Debug1] " & StrSQL
'Assemble the commandtext.
objCommand.CommandText = strSQL
if checkit("Fehler beim Übergeben des Kommandos!") then exit function
'Execute the query.
Set objRS = objCommand.Execute
if checkit("Fehler beim Ausführen der Suche im Active Directory!") then exit function
Wscript.echo "[Debug2] " & objRS.Fields(strfield).value
SAM2ADInfo = objRS.Fields(strfield).value
on error goto 0
end function
' Fehlerprüfung
function checkit(Nachricht)
checkit = false
if err.number <>0 then
Nachricht = Nachricht & " [" & err.description & " (" & err.number & ")]"
wscript.echo Nachricht
err.clear
checkit=true
end if
end function
3.
...wobei die erste Zeile eigentlich später nicht heißen sollte..
wscript.echo SAM2ADInfo("NilsK", "mail")
' ...sondern...
wscript.echo SAM2ADInfo(wscript.arguments(0), "mail")
denn dann kannst Du den Schnipsel aus einem Batch heraus aufrufen mit
cscript //nologo getUsersMail.vbs %username%
:: ... und das Ganze noch mal einwickeln in eine FOR /F-Anweisung.
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