Jump to content

Umgebungs- bzw. Benutzervariable mit einem Befehl füllen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

ich habe hier folgendes Problem:

Ich will mir den Vor- und Nachnamen eines jeden Benutzers in eine seperate Variable schreiben, um diese dann nutzen zu können.

z.b. will ich die Regsitry Werte UserName, UserInitials und Company unter HKEY_CURRENT_USER\ Software\Microsoft\Office\Common\UserInfo mit den folgenden Werten füllen:

UserName mit dem Vor- und Nachnamen des jeweiligen Benutzers
und
UserInitials mit jeweils dem ersten Buchstaben des Vor- und Nachnamens

Meine erste Idee hierzu war:

 

set fn=<%windir%\System32\dsquery.exe user -samid %username% |dsget user -fn
set ln=<%windir%\System32\dsquery.exe user -samid %username% |dsget user -ln


Funktioniert leider so nicht. Ich vermute das liegt ganz einfach daran, daß das Ergebnis der dsquery.exe Abfrage einen Output mit mehreren Zeilen zurückgibt. Der Output sieht nämlich so aus:
 

 fn
  Karl
dsget war erfolgreich

Jetzt denke ich muss ich genau diese Ausgabe irgendwie zerlegen, so daß ich nur noch den Namen übrig behalte, um diesen dann an den set Befehl übergeben zu können.

Und genau hier ist mein Problem, warum ich diesen Thread hier schreibe.
Ich hoffe mir kann hier jemand helfen die Ausgabe des Befehls %windir%\System32\dsquery.exe user -samid %username% |dsget user -fn so zu zerlegen, daß nur noch der Name selbst übrig bleibt.

Link zu diesem Kommentar

Moin,

 

ich würde das mit einem kleinen VBScript machen (allerdings hauptsächlich deshalb, weil ich es ohnehin dahabe), sonst wäre auch PowerShell ein Kandidat.

 

[faq-o-matic.net » Ein AD-Attribut zu einem Logon-Namen herausfinden]
http://www.faq-o-matic.net/2004/07/28/ein-ad-attribut-zu-einem-logon-namen-herausfinden/

 

Schöne Grüße, Nils

Link zu diesem Kommentar

Hallo Nils,

 

vielen Dank für die schnell Antwort.

Wenn ich meinen Anmeldenamen als Loginname setze und für den ADSI-Namen des Feldes, das zurückgegeben werden soll es bei mail belasse, dann kommt bei mir keine Rückmeldung. Ersetze ich Loginname durch %username% passiert leider auch nichts. Ersetze ich aber den ADSI-Namen des Feldes das zurückgegeben werden soll durch fn oder ln, die bei dsget, dann kommt das hier:

post-16969-0-68527300-1360677912_thumb.jpg

Link zu diesem Kommentar

Moin,

 

Wenn ich meinen Anmeldenamen als Loginname setze und für den ADSI-Namen des Feldes, das zurückgegeben werden soll es bei mail belasse, dann kommt bei mir keine Rückmeldung.

 

nein, kann bei dem Code auch nicht. Der Code hinterlegt die Daten in der Variablen strLDAP und macht dann nichts weiter damit. Füge mal folgende zweite Zeile ein:

WScript.Echo strLDAP

 

Oder ersetze, wie im Artikel angegeben, die erste Zeile durch den unteren Codeblock.

 

Ersetze ich Loginname durch %username% passiert leider auch nichts.

 

Kann auch nicht, siehe oben. VBS löst zudem die CMD-Variablen nicht auf.

 

Ersetze ich aber den ADSI-Namen des Feldes das zurückgegeben werden soll durch fn oder ln, die bei dsget, dann kommt das hier:

 

Klar, es gibt im AD auch keine Felder, die so heißen. dsget nutzt eigene Feldbezeichnungen, warum auch immer dessen Programmierer das für eine gute Idee hielt.

 

Ich werde das Skript gleich mal als Download auf die Seite setzen.

 

Schöne Grüße, Nils

bearbeitet von NilsK
Link zu diesem Kommentar

Hallo,

 

VB ist bestimmt ganz schön und auch praktisch, aber auch mit CMD kann man das Ziel erreichen. Und vor allem mit wesentlich weniger Code.

for /f "tokens=1* delims=: " %%i in ('dsquery user -samid %username%^|dsget user -fn -L^|findstr /b "fn:"') do set "fn=%%j"

macht genau das was ich wollte.

Vielen Dank nochmal an alle für Ihre Ideen.

Link zu diesem Kommentar

Moin,

 

aber auch mit CMD kann man das Ziel erreichen.

 

hat niemand bezweifelt. Ich wies ja auch darauf hin, dass ich das Skript halt fertig habe.

 

Und vor allem mit wesentlich weniger Code.

 

Das "Argument" wird oft gebracht, zieht aber nicht. Der längere Code macht schließlich auch was anderes. (Genau betrachtet ist der VBS-Code sogar ziemlich umständlich, aber es gibt gerade keinen Anlass, ihn neu zu machen.)

 

Vielen Dank nochmal an alle für Ihre Ideen.

 

Immer gern.

 

Schöne Grüße, Nils

bearbeitet von NilsK
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...