Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   [решено] Переименование рабочих станций в домене (http://forum.oszone.net/showthread.php?t=60139)

private 27-01-2006 07:05 397667

[решено] Переименование рабочих станций в домене
 
Имеется:
- контроллер домена на win2000server (AD, DNS, DHCP)
- около сотни рабочих станций (win2000pro).

Проблема следующая: возникла необходимость срочно переименовать рабочии станции. Нет ли какого-нибудь инструмента, чтобы сделать это, не сходя с места и не беспокоя пользователя?
Сомневаюсь, конечно, что такое возможно, т.к. переименование требует пары-тройки перезагрузок, но... вдруг у кого-нибудь есть какие-то соображения? :-)
А то слишком уж много времени тратится на посещение каждого пользователя (компьютеры находятся в разных зданиях).
Спасибо!

XPurple 27-01-2006 08:30 397687

Как вариант: через удаленный реестр
На самом деле здесь очень много "но". Являются ли станции членами домена или нет. Если да, то ответ один, если нет, то ответ другой.

private 27-01-2006 09:28 397697

XPurple, да, все рабочие станции в домене, я переименовываю их обычным способом "в ручную": вывожу комп. из домена в раб.группу, убиваю в DNS старое имя (если требуется), а затем опять ввожу в домен под новым именем - на одну машину тратится около 15-20 минут. Но такой способ для сотни компьютеров слишком уж трудоёмкий, вот и ищу, как бы сделать это всё "оптом" или, по крайней мере, сидя на одном месте.

Fighter 27-01-2006 09:36 397703

private поиск в разделе по слову netdom
fix! Как переподключить членов домена к новому, после потери старого?
сайт производителя:
How To Use the Netdom.exe Utility to Rename a Computer in Windows Server 2003
итого на машину в среднем "тратится" < 1 минуты

Dennis 27-01-2006 10:50 397721

private
И еще, по поводу "ручного" метода. Где у вас взялось 15-20 минут? На самом деле, достаточно 1-3х минут.
(Из dns можно убить до похода к клиенту)
А почему не отрабатывает просто переименование?
Да и если перевести в рабочую группу, необзательно перезагружаться, хоть windows и хочет того. Можно сразу сключаться в домен обратно.

А вообще, см. предыдущий вариант, как указал Fighter.

private 27-01-2006 11:00 397727

Fighter, спасибо, попробую поэкспериментировать с Netdom.exe

Dennis, просто переименование (как это ни странно звучит) срабатывает на win2000server и на winXP, а вот win2000pro не хочет - в AD отключается учётная запись данного компьютера, но пока не вычистишь DNS и не сделаешь манипуляции по выходу/входу, переименовываться не желает.

V Telm 27-01-2006 17:57 397930

private
А автоматическаяя регистрация в DNS из DHCP у вас стоит?

Fighter 28-01-2006 12:14 398202

еще, как вариант, с помощью скрипта
(расширение *.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"


private 30-01-2006 06:06 398751

Всем большое спасибо!

private 30-01-2006 12:15 398884

Кстати, нашёл ещё один скрипт для переименования, существенно ускоряет процесс. Вдруг кому пригодится

Код:

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/


Время: 14:40.

Время: 14:40.
© OSzone.net 2001-