W2K-Networker 11 Geschrieben 12. Februar 2013 Melden Teilen Geschrieben 12. Februar 2013 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 BenutzersundUserInitials mit jeweils dem ersten Buchstaben des Vor- und NachnamensMeine 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. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 12. Februar 2013 Melden Teilen Geschrieben 12. Februar 2013 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 Zitieren Link zu diesem Kommentar
W2K-Networker 11 Geschrieben 12. Februar 2013 Autor Melden Teilen Geschrieben 12. Februar 2013 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: Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 12. Februar 2013 Melden Teilen Geschrieben 12. Februar 2013 Ich hatte mein Script dazu schon einmal gepostet: http://www.mcseboard.de/topic/186310-erst-start-word-und-co/ Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 12. Februar 2013 Melden Teilen Geschrieben 12. Februar 2013 (bearbeitet) 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 12. Februar 2013 von NilsK Zitieren Link zu diesem Kommentar
W2K-Networker 11 Geschrieben 13. Februar 2013 Autor Melden Teilen Geschrieben 13. Februar 2013 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. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 13. Februar 2013 Melden Teilen Geschrieben 13. Februar 2013 (bearbeitet) 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 13. Februar 2013 von NilsK Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.