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-ID: 75948

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

Ausgedruckt am: 20.11.2024 um 03:11 Uhr

rubberduck
rubberduck 11.01.2008 um 09:34:57 Uhr
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.
ReneKruse
ReneKruse 11.01.2008 um 10:57:58 Uhr
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
rubberduck
rubberduck 11.01.2008 um 11:11:45 Uhr
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
ReneKruse
ReneKruse 14.01.2008 um 08:58:08 Uhr
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
rubberduck
rubberduck 14.01.2008 um 09:57:26 Uhr
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.
rubberduck
rubberduck 15.01.2008 um 08:10:24 Uhr
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.