connect55
Goto Top

Windows Benutzervariablen

like %username%
welche gibt es?

Kann mir jemand sagen, welche Windows Umgebungsvariablen es im Rahmen der Userverwaltung gibt?
Es geht darum, dass ich den Nachnamen für das Heimatverzeichnis des Users haben möchte, der Benutzername jedoch nen anderer ist.
Und dies bei jedem User händisch zu ändern ist dann doch irgendwie langweilig...

Vielen Dank schonmal,
Jens

Content-ID: 28224

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

cykes
cykes 15.03.2006 um 12:43:18 Uhr
Goto Top
Hi,

Du kannst mal in dieses PDF schauen:
http://www.addison-wesley.de/media_remote/katalog/bsp/3827322774bsp.pdf

Auf den Seiten 14-16 findest Du eine Liste der Umgebungsvariablen.

Alternativ reicht eventuell schon ein Aufruf von "set" auf der Kommandozeile...

Gruß

cykes
connect55
connect55 15.03.2006 um 12:48:54 Uhr
Goto Top
danke erstmal für die schnelle Antwort.
Demnach gibt es wohl leider keine direkte Variable zum Vor- oder Nachnamen...
Wäre ja auch zu einfach...face-wink
cykes
cykes 15.03.2006 um 12:53:06 Uhr
Goto Top
Du kannst das eventeull, wenn Du ein bsichen Programmieren kannst, mit einer LDAP Anfrage
ans Active Directory lösen, geht z.B. mit WSH oder halt mit einer richtigen Programmiersprache.

Ich bin allerdings kein Entwickler, da erstellst Du, wenn Du da fragen hast nochmal einen
Beitrag im Entwickler Teil...

Gruß

cykes
djbrandt
djbrandt 15.03.2006 um 22:21:08 Uhr
Goto Top
Hi,

falls Du in einer Umgebung mit W2K3 und AD arbeitest:

dsquery user -samid [UserID] | dsmod user -ln [neuer Nachname]

ändert den Nachnamen des Benutzers [UserId]

dsquery user -samid [UserID] | dsget user -ln

zeigt den Nachnamen


Gruß

Dieter
connect55
connect55 16.03.2006 um 08:41:04 Uhr
Goto Top
erstmal danke,
die Abfrage klappt einwandfrei!
Aber wie kann das Ergebnis dieser Abfrage jetzt in den Pfad zum Home-Verzeichnis mit einfügen? Geht das überhaupt ohne großartige Verrenkungen?
djbrandt
djbrandt 16.03.2006 um 11:37:42 Uhr
Goto Top
Hi,

legt Dir folgendes Skript an:

snippet +++++++++++++
UserCN= Replace(WScript.StdIn.ReadLine,"""","")

path = "LDAP:" & UserCN

On Error Resume Next
Set objkonto = GetObject(path)
If Err.Number <>0 Then
WScript.Echo UserCN & " wurde nicht gefunden."
WScript.Quit
End If
On Error Goto 0

LastN = objkonto.Lastname
UserHome = objkonto.HomeDirectory

WScript.Echo "Nachname= " & LastN
WScript.Echo "Altes Userverzeichnis= " &UserHome

objkonto.HomeDirectory = "\\Filer\User$\" & LastN
objkonto.SetInfo

WScript.Echo "Neuer HomePath: " & objkonto.HomeDirectory
snippet +++++++++++++++++++++++++++

Mit \\Filer\User$\ meine ich den Pfad zu dem Server wo die Userhomes alle liegen sollen.


Ausführen:

dsquery user -samid [UserID] | cscript setuserhome.VBS


Das Skript hat den Vorteil, das die User igendwo im AD liegen können.

mit dem "dsquery ..." übergebe ich dem vbs den kompletten CN des Users.

Das VBS liest dann den Nachnamen aus und setzt das neue UserHome.


Das ganze läßt sich natürlich schön in eine Schleife umwandeln:

for /f "usebackq tokens=*" %i in ('dsquery user -limit 1000`) do @echo %i | cscript
nologo setuserhome.VBS

Setzt das Userverzeichnis für die ersten 1000 User neu !!!! Aber VORSICHT !!!


Falls was schießläuft: Ersetze in dem vbs das "& LastN" einfach durch

"& Split(objkonto.Name,"=",1,1)"

und lass das Skript noch mal laufen. dann haben die User wieder ihr altes HomeDir

Grüße

Dieter