renekruse
Goto Top

Renamecomputer.vbs für W2K-Clients gesucht.

Unsere Absicht ist es, in einer W2K3-Dömane mithilfe eines Scriptes per Remote die Computernamen der Clients zu ändern. Ein vorhandenes Script (http://techinfo.cnwl.ac.uk/Windows%20Scripts/default.asp?dest=Rename%20 ..) funktioniert bei XP-Client perfekt.

Leider haben wir festgestellt, daß diese Methode nicht bei W2K-Clients funktioniert.

Eine mögliche Ursache könnte sein, daß WMI unter W2K diese Funktionalität nicht unterstützt.

Ein Tipp eines Kollegen war, ein Startupscript zu schreiben, welches diese Aktion durchführt.

Wer kann ein solches Programmieren?
Oder hat jemand eine andere Idee, wie wir die W2K-Clients per Remote umbenennen können?

Vielen Dank

Content-Key: 75948

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

Printed on: April 24, 2024 at 04:04 o'clock

Member: rubberduck
rubberduck Jan 11, 2008 at 08:34:57 (UTC)
Goto Top
Was steht in der Registry Deiner w2k-Clients unter HKLM\SOFTWARE\Microsoft\Ole DCOM?

Ach ja. Mach noch ein On Error Goto 0 mit einer Auswertung rein und gib durch, was da für eine Fehlermeldung kommt.
Member: ReneKruse
ReneKruse Jan 11, 2008 at 09:57:58 (UTC)
Goto Top
Name: EnableDCOM
Wert: Y

Wo soll ich "On Error Goto 0" einbauen und verwenden?
Im Script selber?

Vielen Dank für die Antwort
Member: rubberduck
rubberduck Jan 11, 2008 at 10:11:45 (UTC)
Goto Top
Im Script, Ja.

Wird für das ErrorHandling in Scripten verwendet.
Wenn ein Fehler auftaucht, dann springt der Code dorthin. Mit Err.Description und Err.Source kannst Du den Fehler ausgeben lassen (Gibt übrigens gute Tut's dazu face-wink)

Kannst es natürlich auch so machen:
Z.Bsp.
[Scriptanfang]
On Error Resume Next

[ScriptEnde]
Msgbox Err.Source & " ; " & Err.Description

*Räusper* Wenn Du aber solche Fragen stellst, bist Du sicher dass Du so etwas wirklich per Script machen willst? *Hüstel* 0face-smile
Member: ReneKruse
ReneKruse Jan 14, 2008 at 07:58:08 (UTC)
Goto Top
so ??

On Error Resume Next
sOld=wscript.arguments.named("old")
sNew=wscript.arguments.named("new")
if sOld="" or sNew="" then
wscript.echo "Run this as renamecomp.vbs /old:oldname /new:newname"
end if
sDomainUser = "administrator@domain.local"
sDomainPasswd ="Kennwort"
sAdminUser=sOld & "\benutzer"
sAdminPassword= "Kennwort"

set oWMILocator = CreateObject("WbemScripting.SWbemLocator")
oWMILocator.Security_.AuthenticationLevel = 6
set oWMIComputer = oWMILocator.ConnectServer(sOld, "root\cimv2",sOld & sAdminUser,sAdminPassword)
set oWMIComputerSystem = oWMIComputer.Get("Win32_ComputerSystem.Name='" & sOld & "'")

rc = oWMIComputerSystem.Rename(sNew,sDomainPasswd,sDomainUser)
if rc <> 0 then
WScript.Echo "Rename failed with error: " & rc
else
WScript.Echo "Successfully renamed " & sOld & " to " & sNew
wscript.echo "Now rebooting"
rebootMachine sOld
end if

Sub RebootMachine(scompName)
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate,(Security,Shutdown)}!\\" & scompName & "\root\cimv2")
Set OS_Set = oWMI.Get("Win32_OperatingSystem")
For Each os in OS_Set.Instances_()
'* Force Reboot *
ret = os.Win32Shutdown(6)
Next
End Sub
Msgbox Err.Source & " ; " & Err.Description
Member: rubberduck
rubberduck Jan 14, 2008 at 08:57:26 (UTC)
Goto Top
Ich würde es so machen:

rc =
oWMIComputerSystem.Rename(sNew,sDomainPasswd,sDomainUser)
if rc <> 0 then
WScript.Echo "Rename failed with
error: " & rc
else
WScript.Echo "Successfully renamed
" & sOld & " to "
& sNew
wscript.echo "Now rebooting"
rebootMachine sOld
end if
Msgbox Err.Source & " ; " & Err.Description


Aber sonst ja...

Als Startupscript kannst Du etwas in dieser Art nehmen:
strComputer = InputBox("Enter computer name or IP.", "Logged-on user")

strNamespace = "root\cimv2"
strUserName = InputBox _
    ("Enter user name.", "Logged-on user", "administrator")
strPassword = InputBox _
    ("Enter password.", "Logged-on user", "password")

dim objWMILocator     ' SWbemLocator object
dim objWMIService     ' SWbemServices object

Set objWMILocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objWMILocator.ConnectServer _
    (strComputer, strNamespace, strUserName, strPassword)

Set colComputer = objWMIService.ExecQuery _
   ("Select * from Win32_ComputerSystem")

For Each objComputer in colComputer
   strNewName = objComputer.UserName
   Wscript.Echo "Logged-on user: " & objComputer.UserName
Next

yesno = MsgBox _
    ("Would you like to rename this computer?", _
    vbYesNo, "Rename computer")
if yesno = 6 then
   Set colComputers = objWMIService.ExecQuery _
       ("Select * from Win32_ComputerSystem")
   strNewName = InputBox _
       ("Enter new computer name.", "Rename computer", strNewName)
   For Each objComputer in colComputers
       ObjComputer.Rename(strNewName)
   Next
   MsgBox "The computer named "&strOldName _
       &" was renamed to "& strNewName
end if

Habe leider keine Zeit mehr zum Erklären. Schau mal , ob Du es verstehst.
Member: rubberduck
rubberduck Jan 15, 2008 at 07:10:24 (UTC)
Goto Top
Hab da noch was bei Microsoft gefunden, was Dir weiterhelfen könnte

Rename Computer

Musst nur noch eine kleine Routine einbauen, damit nicht bei jedem Anmelden der Computer umbenannt wird.
Das fertige Script in die GPO, damit es beim Systemstart ausgeführt wird und Deiner Migration dürfte nichts mehr im Wege stehen.