andy2005
Goto Top

Mehrere Userkontoen gleichzeitig ändern unter NT 4.0

Hallo, wer kann mir sagen, wie man am einfachsten bestimmmte Benutzereigenschaften innerhalb einer NT 4.0 Domäne, bei mehreren 100 Usern abändert (z.b. Home-dir-pfad, TSE-Profile-Pfad, usw.) ohne jeden einzelnen User per Usermanager manuell abändern zu müssen. Gibt es dazu evt. Tools oder Scripts, die sowas erleichtern ? Das ganze muss natürlich abfragbar sein, d.h. nur User, die bereits einen bestimmten Pfad zugewiesen haben, bekommen den neuen Pfad gesetzt.) Hintergrund : Neuer Fileserver, der natürlich anders heisst wie der alte muss für die User möglichst einfach zu einem bestimmten Stichtag zur Verfügung stehen, d.h. z.B. der Servername in den User-Eigenschaften (Home-Dir, TSE-Profilpfad, usw.) muss möglichst einfach umgestellt werden können. Gleiches gilt auch für die Pfade für die Citrix-TSE-Profiles, die auf dem Fileserver liegen. Any ideas ? Gibt es evt. Tools ?

Vielen Dank im Voraus für Eure Hifle !

Content-ID: 8351

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

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

fritzo
fritzo 21.03.2005 um 02:30:44 Uhr
Goto Top
Hi,

ich kenn mich mit VBScript noch nicht wirklich gut aus, habe mich aber eben mal hingesetzt und ein Script zusammengestrickt, das zumindest das Homeshare aller User einer bestimmten Gruppe ändert und Dir dann für jeden User dieser Gruppe den Usernamen, den alten und den neuen Homesharepfad auflistet. Es ist zwar keine ausgefeilte RegEx - Funktion dabei, aber ein simples "Replace" tuts in diesem Fall auch.

Du mußt den Domänen- und den Gruppennamen entsprechend ändern. Speicher es dann als "ChangeHomes.vbs" ab und führ es mit "cscript changehomes.vbs" aus. Verwende erst mal eine Testgruppe, um zu checken, ob alles funktioniert - sollte es aber.

snip-----------------
On Error Resume Next

Dim GroupObj
Dim UserObj
Dim OldHomeStr
Dim NewHomeStr

Set GroupObj = GetObject("WinNT://DOMAENE/GRUPPE")
For each UserObj in GroupObj.Members
OldHomestr = UserObj.HomeDirectory
NewHomeStr = Replace (UserObj.HomeDirectory, "\\server1\", "\\server2\")
UserObj.HomeDirectory = NewHomeStr
WScript.echo ("User: " & UserObj.Name & vbCrLf &_
"Home alt: " & OldHomeStr & VbCrLf &_
"Home neu: " & NewHomeStr)
UserObj.SetInfo
Set UserObj = Nothing
Next
WScript.Quit
snip-----------------


Andere mögliche Parameter, die Du ändern kannst, wenn Du das Script entsprechend ergänzt:
UserObj.FullName
UserObj.Description
UserObj.HomeDirectory
UserObj.HomeDirDrive
UserObj.Profile
UserObj.LoginScript
UserObj.AccountType
UserObj.Caption
UserObj.Description
UserObj.Disabled
UserObj.Domain
UserObj.FullName
UserObj.InstallDate
UserObj.LocalAccount
UserObj.Lockout
UserObj.Name
UserObj.PasswordChangeable
UserObj.PasswordExpires
UserObj.PasswordRequired
UserObj.SID
UserObj.SIDType
UserObj.Status

Du mußt hier einfach die entsprechenden Parameter definieren und dann als letztes mit UserObj.SetInfo setzen. Ich hoffe, das hilft Dir schon mal weiter.

Grüße,
fritzo
Andy2005
Andy2005 04.04.2005 um 21:39:29 Uhr
Goto Top
Hi Fritzo,

danke für deinen Tipp. Mir fehlt noch eine exakte Auflistung aller möglichen User-Objekt-Attribute. Wo hast du denn z.b. deine Auflistung her ? Ich suche nämlich auch noch nach den Objekt-Eigenschaften die z.B. für Citrix-TSE-Profile-Pathes usw. verwendet werden, um die auszulesen. Gibt es da eine Quelle ?

Danke !
fritzo
fritzo 05.04.2005 um 00:44:01 Uhr
Goto Top
Hi,

da gibt es mehrere Quellen, zB www.microsoft.com. Ich habe mir die Sachen irgendwann mal wegkopiert, habe aber die Link nicht mehr - such einfach mal nach den Teiltexten, dann solltest Du was finden. Die Attribute der Klasse User hatte ich glaube ich mal aus dem kostenlosen Tool "Scriptomatic" kopiert.

Um auf die Eigenschaften der Terminalservereinstellungen zugreifen zu können, brauchst Du Zugriff auf einen anderen Container, das funktioniert mit WINNT nicht. Stattdessen mußt Du hier LDAP verwenden.

Ein Beispiel für den Zugriff auf die User einer bestimmten Gruppe und Setzen der TS-spezifischen Parameter findest Du ---hier---

Mit Get und WScript.Echo kannst Du Dir die Parameter anzeigen lassen.

Grüße,
fritzo