Назад | Перейти на главную страницу

Как переименовать несколько компьютеров в домене

Я унаследовал это дурацкое соглашение об именах:

КОМПАНИЯ-CITY20090724 или НАЗВАНИЕ КОМПАНИИ-ГОРОД-ДЖОН

Он мне ничего не говорит о месте (этаж, отдел). Джон покинул компанию несколько месяцев назад. Компьютеры из одного города переехали в другой, но название не изменилось.

Как вы можете переименовать более 100 компьютеров, если хотите создать новое соглашение об именах?

Конечно. Утилита NETDOM в этом случае «ваш друг». Вы можете использовать сценарий запуска для переименования компьютеров.

Некоторые документы по NETDOM находятся здесь:

Я мог видеть действительно упрощенный сценарий вроде этого:

@echo off
IF "%COMPUTERNAME%"=="COMPANYNAME-CITY-JOHN" SET NEWNAME=NEWNAME-HERE
IF "%COMPUTERNAME%"=="COMPANYNAME-CITY-BOB" SET NEWNAME=NEWNAME-HERE2
... more machines ...
IF NOT "%NEWNAME%"=="" NETDOM renamecomputer member /newname:%NEWNAME% /userd:USER-TO-PERFORM-RENAME-UNDER /password:PASSWORD-FOR-THAT-USER

После переименования всех компьютеров вы можете убрать сценарий запуска. Работа на уже переименованных компьютерах не должна быть слишком «дорогой». Если вас это беспокоит, вы можете использовать технику «лазейки», при которой сценарий заканчивается тем, что компьютер помещает себя в группу, которой было отказано в правах на выполнение сценария.

  • Создайте группу в AD - скажите «Переименование компьютера завершено».
  • Измените разрешение для группы, включив в него «Компьютеры домена - запись / добавление себя в качестве члена»
  • В упрощенном сценарии пакетного файла выше добавьте строку в конце:
IF NOT "%NEWNAME%"=="" NET GROUP "User Creation Script Complete" /DOMAIN /ADD %COMPUTERNAME%$

Вы увидите, что эта группа «растет» на компьютерах-членах, когда она работает на каждой машине. Чтобы остановить выполнение сценария на компьютерах, на которых он уже запущен, добавьте разрешение для объекта групповой политики, который назначает сценарий запуска «Переименование компьютера завершено - запретить применение групповой политики». Затем сценарий будет запускаться один раз на каждой машине.


Каковы будут названия вашего пункта назначения? Если вы похожи на меня и вам нравятся номера сервисных тегов Dell, вы можете сделать что-то вроде этого (на VBScript):

Option Explicit
Dim objWMIService, strNewName, objShell, objNetwork
Set objShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")

' Obtain the service tag
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
For Each objSMBIOS in objWMIService.ExecQuery("SELECT * FROM Win32_SystemEnclosure")
    strNewName = objSMBIOS.SerialNumber 
Next

' Check for empty string
If (strNewName = "") Then WScript.Quit

' Does the computer need to be renamed?
If (UCase(strNewName) <> UCase(objNetwork.ComputerName)) Then    
     objShell.Run "NETDOM renamecomputer member /newname:" & strNewName & " /userd:USER-TO-PERFORM-RENAME-UNDER /password:PASSWORD-FOR-THAT-USER"
End If

Который сценарий мог просто работать все время и постоянно переименовывать компьютеры, имена которых не были названы на основе их служебных тегов ... хе-хе. (Я не уверен, что действительно сделаю это, и если бы я сделал, я бы добавил больше проверки работоспособности в сценарий.)

Вы можете сделать это через PowerShell. В Excel создайте файл с двумя столбцами, один для старого имени, один для нового имени. Добавьте старое и новое имя строки заголовка. Сохраните его как CSV (mylist.csv), затем запустите в PowerShell:

function renameAndReboot([string]$computer, [string]$newname)
{
        $comp = gwmi win32_computersystem  -computer $computer
        $os   = gwmi win32_operatingsystem -computer $computer

        $comp.Rename($newname)
        $os.Reboot()
}

Import-Csv mylist.csv

foreach ($entry in $list)
{
    renameAndReboot($entry.oldname,$entry.newname)
}

... основной код взят из Вот.

Компьютеры из одного города переехали в другой город, но название не изменилось.

Это слабость схем именования, которые пытаются описать местоположение, владельца, функции и т. Д. Вещи меняются. Таким образом, вы либо часто переименовываете компьютеры (и каждый раз перезагружаетесь!), Либо имеете схему именования, которая со временем приходит в негодность.

Могу я предложить поле описания? альтернативный текст http://lh3.ggpht.com/BryanLockwood/SKbN8OdozVI/AAAAAAAAAVU/C3ZeLX0_wGc/%5C%5Ccojones.org%5Cfiles%5Cusers%5Cbryan%5CDesktop%5CComputerDimgescription.PNG5

Вы можете легко перечислить компьютеры и их описания: альтернативный текст http://lh6.ggpht.com/BryanLockwood/SKbN8HBTywI/AAAAAAAAAVc/vu65Fm4R5aM/%5C%5Ccojones.org%5Cfiles%5Cusers%5Cbryan%5CDesktop%5Ccmd-example-descriptions.Pax

Подробнее об этом в моем блоге.

Если вы не знакомы с инструментом командной строки Netdom, попробуйте использовать Netdom переименовать графический интерфейс компьютера из окрашивать.

Это поможет вам переименовать несколько компьютеров в вашем домене, загрузив файл .csv без необходимости запоминать или изучать какой-либо код командной строки или создавать какие-либо сценарии.

Этот графический интерфейс сэкономил мне много времени.