Показать полную графическую версию : [решено] Переименование рабочих станций в домене
Имеется:
- контроллер домена на win2000server (AD, DNS, DHCP)
- около сотни рабочих станций (win2000pro).
Проблема следующая: возникла необходимость срочно переименовать рабочии станции. Нет ли какого-нибудь инструмента, чтобы сделать это, не сходя с места и не беспокоя пользователя?
Сомневаюсь, конечно, что такое возможно, т.к. переименование требует пары-тройки перезагрузок, но... вдруг у кого-нибудь есть какие-то соображения? :-)
А то слишком уж много времени тратится на посещение каждого пользователя (компьютеры находятся в разных зданиях).
Спасибо!
Как вариант: через удаленный реестр
На самом деле здесь очень много "но". Являются ли станции членами домена или нет. Если да, то ответ один, если нет, то ответ другой.
XPurple, да, все рабочие станции в домене, я переименовываю их обычным способом "в ручную": вывожу комп. из домена в раб.группу, убиваю в DNS старое имя (если требуется), а затем опять ввожу в домен под новым именем - на одну машину тратится около 15-20 минут. Но такой способ для сотни компьютеров слишком уж трудоёмкий, вот и ищу, как бы сделать это всё "оптом" или, по крайней мере, сидя на одном месте.
private поиск в разделе по слову netdom
fix! Как переподключить членов домена к новому, после потери старого? (http://forum.oszone.ru/showthread.php?t=1858)
сайт производителя:
How To Use the Netdom.exe Utility to Rename a Computer in Windows Server 2003 (http://support.microsoft.com/kb/325354)
итого на машину в среднем "тратится" < 1 минуты
private
И еще, по поводу "ручного" метода. Где у вас взялось 15-20 минут? На самом деле, достаточно 1-3х минут.
(Из dns можно убить до похода к клиенту)
А почему не отрабатывает просто переименование?
Да и если перевести в рабочую группу, необзательно перезагружаться, хоть windows и хочет того. Можно сразу сключаться в домен обратно.
А вообще, см. предыдущий вариант, как указал Fighter.
Fighter, спасибо, попробую поэкспериментировать с Netdom.exe
Dennis, просто переименование (как это ни странно звучит) срабатывает на win2000server и на winXP, а вот win2000pro не хочет - в AD отключается учётная запись данного компьютера, но пока не вычистишь DNS и не сделаешь манипуляции по выходу/входу, переименовываться не желает.
private
А автоматическаяя регистрация в DNS из DHCP у вас стоит?
еще, как вариант, с помощью скрипта
(расширение *.vbs)
' ------ SCRIPT CONFIGURATION ------
strComputer = "<ComputerName>" e.g. joe-xp
strNewComputer = "<NewComputerName>" e.g. joe-pc
strDomainUser = "<DomainUserUPN>" e.g. administrator@domain
strDomainPasswd = "<DomainUserPasswd>"
strLocalUser = "<ComputerAdminUser>" e.g. joe-xp\administrator
strLocalPasswd = "<ComputerAdminPasswd>"
' ------ END CONFIGURATION ---------
'###########################
' Connect to Computer
'###########################
set objWMILocator = CreateObject("WbemScripting.SWbemLocator")
objWMILocator.Security_.AuthenticationLevel = 6
set objWMIComputer = objWMILocator.ConnectServer(strComputer, _
"root\cimv2", _
strLocalUser, _
strLocalPasswd)
set objWMIComputerSystem = objWMIComputer.Get( _
"Win32_ComputerSystem.Name='" & _
strComputer & "'")
'###########################
' Rename Computer
'###########################
rc = objWMIComputerSystem.Rename(strNewComputer, _
strDomainPasswd, _
strDomainUser)
if rc <> 0 then
WScript.Echo "Rename failed with error: " & rc
else
WScript.Echo "Successfully renamed " & strComputer & " to " & _
strNewComputer
end if
WScript.Echo "Rebooting..."
set objWSHShell = WScript.CreateObject("WScript.Shell")
objWSHShell.Run "rundll32 shell32.dll,SHExitWindowsEx 2"
Кстати, нашёл ещё один скрипт для переименования, существенно ускоряет процесс. Вдруг кому пригодится
Dim RegKeyCompName, RegKeyTCPIP, WSHShell, ComputerName, HostName, DomainName, FQDN, ADRootDSE, ADSysInfo, ADComputerName, ADRenameOK, ADRNewName, vStartRenameCA, NewNAmeU, NewNameL, vStartRenameAD
On Error Resume Next
'###### READ IN EXISTING COMPUTERNAME AND FQDN ######
RegKeyCompName = "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\"
RegKeyTCPIP = "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\"
Set WSHShell = CreateObject("WScript.Shell")
ComputerName = WSHShell.RegRead (RegKeyCompName & "ComputerName\ComputerName")
Hostname = WSHShell.RegRead (RegKeyTCPIP & "Hostname")
DomainName = WSHShell.RegRead (RegKeyTCPIP & "Domain")
FQDN = HostName & "." & DomainName
Set ADRootDSE = GetObject("LDAP://RootDSE")
If Err.Number <> 0 then
ADComputerName = "Unable to determine this information"
ADOU = "Unable to determine this information"
ADRenameOK = "0"
else
Set ADSysInfo = CreateObject("ADSystemInfo")
ADComputerName = ADSysInfo.ComputerName 'Get DN of local computer
ADRenameOK = "1"
ADOU = Mid(ADComputerName, InStr(ADComputerName, "=") + 1) 'Strip off just after the first = sign
ADOU = Mid(ADOU, InStr(ADOU, "=") - 2) 'Strip off at 2 before the second = sign
ComputerPath = "LDAP://" & ADComputerName
OUPath = "LDAP://" & ADOU
End if
'###### ASK USER FOR NEW DETAILS ###########
MsgBox "This script renames this computer and its active directory account" & vbCr & vbCr & "Name: " & ComputerName & vbCr & "FQDN: " & FQDN & vbCr & vbCr & "AD DN: " & ADComputerName & vbCr & "AD OU: " & ADOU, 0, "Information"
NewName = InputBox("Enter the new computer name below and click OK to continue","Rename: Step 1")
NewNameU = UCase(NewName)
NewNameL = LCase(NewName)
NewNameUCN = "CN=" & NewNameU
if NewName = "" then
wscript.echo "The computer name has not been changed"
else
vStartRenameCA = MsgBox ("Continue and rename computer to: " & NewName,vbYesNo or vbExclamation,"Rename: Step 2")
if vStartRenameCA = 6 then
With WSHShell
.RegDelete RegKeyTCPIP & "Hostname"
.RegDelete RegKeyTCPIP & "NV Hostname"
.RegWrite RegKeyCompName & "ComputerName\ComputerName", NewNameU
.RegWrite RegKeyCompName & "ActiveComputerName\ComputerName", NewNameU
.RegWrite RegKeyTCPIP & "Hostname", NewNameL
.RegWrite RegKeyTCPIP & "NV Hostname", NewNameL
End With
wscript.echo "The computer name and FQDN have been changed"
elseif vStartRenameCA = 7 then
wscript.echo "The computer name and FQDN have NOT been changed"
end if
if ADRenameOK = 1 then
vStartRenameAD = MsgBox ("Continue and rename AD Account to: " & NewName,vbYesNo or vbExclamation,"Rename: Step 3")
if vStartRenameAD = 6 then
Set objItem = GetObject(ComputerPath)
objItem.Put "dNSHostName", NewNameL & DomainName
objItem.SetInfo
objItem.Put "displayName", "DESKTOP_" & NewNameU & "$"
objItem.SetInfo
objItem.Put "sAMAccountName", NewNameU & "$"
objItem.SetInfo
Set objNewOU = GetObject(OUPath)
Set objMoveComputer = objNewOU.MoveHere _
(ComputerPath, NewNameUCN)
wscript.echo "The active directory computer account has been changed"
elseif vStartRenameAD = 7 then
wscript.echo "The computer account in AD has NOT been changed"
End If
else
wscript.echo "Insufficient information to rename AD account"
End If
End if
И ещё пара интересных ссылок по сходной тематике:
http://calnetad.berkeley.edu/documentation/scripts/
http://thelazyadmin.com/
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.