Avatar billede jpi Mester
19. juli 2007 - 13:48 Der er 18 kommentarer og
1 løsning

Ændre computernavn osv. 2

Jeg har spurgt om noget tilsvarende her: http://www.eksperten.dk/spm/785921 men det var åbenbart ikke nok, for at få det til at virke ordentligt.

Her er min problemstilling:

Jeg har nogle PC'er som jeg jævnligt lægger et nyt WIN-XP image på. Efter imaget er lagt på skal jeg manuelt ændre IP-adresse og computernavn for masinen, og det vil jeg gerne lave lidt mere automatisk.

Jeg har fundet ud af at man med netsh kan ændre IP-adresse osv. Så langt så godt.

Problemet kommer med selve computernavnet.

Computerne skal hedde PC1, PC2, PC3, osv. og i det image jeg har
hedder computeren PC.
På domæneserveren er alle computerne oprettet og vist i listen.

Jeg har forsøgt med netdom.exe men så kommer problemerne:
Når jeg vil lave en renamemachine fra PC til PC1 skriver den at kontoen allerede fidnes. Klart nok... Så kan jeg slette PC1 på serveren, og så virker omdøbningen. Men omdøbningen omfatter ikke kun selve computeren, men også kontoen på serveren. Det betyder at kontoen PC er omdøbt til PC1. Og når jeg laver lægger imaget over på den næste maskine, så kan den ikke logge på da den hedder PC, men det er der ikke nogen konto der hedder på serveren.

Er der nogen gode forslag til hvad jeg kan gøre ?

Jeg vil gerne have et værktøj som netdom, men som kun ændrer navnet på selve computeren og ikke kontoen på domænet også. Det skal helst være således at alle computere har kontoen på serveren hele tiden, da det at skulle slette også kræver "speciel-viden" og ikke kan laves af "almindelige brugere".

Målet er at man lægger et image på maskinen, starter den op, dobbeltklikker på et icon på skrivebordet med computernavnet og rebooter maskinen. Derefter er den klar til brug.

Kan nogen hjælpe ?
Avatar billede oskar Nybegynder
19. juli 2007 - 18:33 #1
Jeg har aldrig hørt om et sådant program, men hvis du starter med at melde imaget ud af domænet inden du kloner det ud, så kan du omdøbe uden at det har nogen effekt i ad'et og derefter joine domænet med netdom.
Avatar billede jpi Mester
19. juli 2007 - 22:51 #2
Ja, det er rigtigt, men er der en kommando der kan køres fra en kommandoprompt (dvs. en .bat fil) så man kan ændre navnet på computeren?
Avatar billede jpi Mester
19. juli 2007 - 22:52 #3
Og man kan ikke bare joine domænet med netdom, medmindre man på serveren sletter kontoen der fandtes i forvejen. :-(
Avatar billede oskar Nybegynder
20. juli 2007 - 20:34 #4
Ja, netdom kan ændre navnet uden problemer fordi maskinen ikke er i domænet.
Når du så har ændret navnet burde du kunne joine, ikke add'e, til domænet hvor kontoen jo stadig eksisterer. Hvis ikke...
Jeg har ikke lige netdom her (hjemme) men den kan også fjerne en maskine fra domænet inden den tilføjer den igen.
netdom remove /d:domæne PC1 /ud:domæne\admin /pd:password

http://technet2.microsoft.com/WindowsServer/en/Library/539c5381-db4f-445f-aac0-2df5448181c11033.mspx

eller

http://technet2.microsoft.com/windowsserver/en/library/9f921edc-87f5-460e-89ee-9ca56ec1d0961033.mspx
Avatar billede jpi Mester
22. juli 2007 - 13:55 #5
Jeg vil kigge på det du skriver imorgen, men det med at omdøbe maskinen uden at den er i domænet kunne jeg vist ikke få til at virke... Den skrev noget med at den ikke var med i domænet...
Avatar billede jpi Mester
23. juli 2007 - 13:20 #6
OK. Jeg har fået det meste til at virke lige med undtagelse af at ændre computernavnet, når den ikke er joinet på domænet.
Den komme med følgende fejlmeddelelse, når jeg prøver:
"This machine is not currently joined to a domain".

Er der en mulighed for at få det til at virke alligevel ?
Avatar billede oskar Nybegynder
23. juli 2007 - 15:01 #7
Så er vi derude hvor man bliver nødt til at prøve med selv at scripte. Prøv med dette vbscript, det ser ud til at virke, men da jeg sidder hjemme og holder ferie har jeg ikke noget domæne at prøve det op mod.

' Lavet af Søren Aagaard
' Der kan ændres i teksten i linje 5 og i linje 36

On Error Resume Next
strNytNavn = InputBox("Hvad skal barnet hedde?","Computernavn")
strNytNavn = UCase(strNytNavn)
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\nm\Parameters\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\NV Hostname",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Hostname",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\ComputerName\ComputerName\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDomainName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AltDefaultDomainName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SchedulingAgent\OldName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Media\WMSDK\General\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Media\WMSDK\General\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\NV Hostname",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Hostname",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nm\Parameters\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Tcpip\Parameters\NV Hostname",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Tcpip\Parameters\Hostname",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\nm\Parameters\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\ComputerName",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Volatile Environment\LOGONSERVER","\\"&strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\@",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComputerDescriptions\"&strNytNavn,"","REG_SZ"
WshShell.RegWrite "HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\ShellNoRoam\@",strNytNavn,"REG_SZ"
WshShell.RegWrite "HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\ShellNoRoam\@",strNytNavn,"REG_SZ"
msg=msgbox("Det var det.")
Avatar billede jpi Mester
23. juli 2007 - 15:29 #8
Lige for at være på den sikre side... Det skal virke når PC'en IKKE er på et domæne...
Avatar billede oskar Nybegynder
23. juli 2007 - 15:33 #9
Ja, det var meningen.
Avatar billede jpi Mester
26. juli 2007 - 08:18 #10
Det virker perfekt. Der er dog en lille ting der irriterer mig, men ved ikke om man kan komme udenom.
Efter at have kørt dit script kan jeg ikke joine domænet med netdom. Den siger domænet ikke kan kontaktes. Det virker efter en reboot.
Er der en måde at få "opdateret" hvad der nu skal opdateres for at det virker ?

Men smid et svar alligevel, for du har løst selve opgaven/spørgsmålet :-)
Avatar billede venturer Nybegynder
26. juli 2007 - 08:33 #11
jpi: Jeg mener nu godt netdom kan omdøbe en maskine som ikke er i domæne. Du skal bare udelade /userD fra kommandoen og kun bruge /userO switchen.

Du bør altså kunne lave et image der IKKE er i domæne. Omdøbe den, og efterfølgende melde den ind i domænet igen. Hvis kontoen allerede eksisterer i domænet, mener jeg at netdom kan bruge til at resette computer kontoen.
Avatar billede jpi Mester
26. juli 2007 - 09:28 #12
venturer: Imaget skal være lavet udenfor domænet, ellrs kan jeg ikke omdøbe ordentligt.

mht. netdom, så skriver jeg følgende:
netdom renamecomputer oldpcname /newname:newpcname /usero:administrator /passwordo:*
Dette skulle bevirke at jeg bliver promptet om password. Det sker også, og når jeg så trykker enter (der er ikke noget password på kontoen), så skriver den logon-failure: unknown user name or bad password

PC-en er i et workgroup kaldet TEMP, og jeg har også forsøgt følgende:
netdom renamecomputer oldpcname /newname:newpcname /usero:temp\administrator /passwordo:*
men med samme resultat...
Avatar billede jpi Mester
26. juli 2007 - 09:32 #13
Har prøvet at sætte et password på brugeren, men uden resultat. Den skriver stadig unknown user og bad password
Avatar billede venturer Nybegynder
26. juli 2007 - 10:19 #14
Hvis den er i en workgroup. så skal brugernanet måske se sådan her ud /usero:computernavn\Administrator
Avatar billede jpi Mester
26. juli 2007 - 10:59 #15
Samme problem...
Avatar billede oskar Nybegynder
26. juli 2007 - 12:56 #16
Jeg tror ikke du kan undgå en reboot, men du kan jo prøve om enten logge af eller den hurtigere at genstarte explorer.exe fra Joblisten måske kan gøre det. Det handler jo blot om at systemet skal genlæse registreringsdatabasen så måske...
Avatar billede oskar Nybegynder
26. juli 2007 - 13:38 #17
Hvis det virker med den hurtige restart af explorer exe kan du jo prøve at lægge disse linjer ind sidst i scriptet:

on error resume next
wscript.sleep 200
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_Process WHERE Name = 'explorer.exe'")
For Each objProcess in colProcessList
    objProcess.Terminate()
Next
wscript.sleep 200
For Each objProcess in colProcessList
    objProcess.Execute()
Next
Avatar billede jpi Mester
26. juli 2007 - 15:43 #18
Det vil jeg prøve imorgen.
Avatar billede jpi Mester
27. juli 2007 - 08:20 #19
Det med explorer.exe virker ikke, så...

Men jeg har fået lavet det i 2 steps, hvor det fungerer automatisk med batch-filer der kopieres til startmenuen, så andet step forløber fuldstændig automatisk uden brugerens indblanding. Der er bare en reboot-sekvens mere end jeg synes var nødvendig, men nu tror jeg ikke jeg vil bruge mere tid på det. :-)

Tak for hjælpen !!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester