Удалённое переименование доменных компьютеров по списку из CSV

Для возможности удалённого централизованного переименования выборочного множества компьютеров под управлением Windows 10 в домене Active Directory сначала потребуется подготовить список компьютеров, подлежащих переименованию, в формате CSV в файл, например, с именем Rename-Computers-List.csv. Файл будет содержать в каждой отдельной строке старое и новое имя компьютера через разделитель - запятую. Первая строка файла должна остаться пустой.

Пример заполненного файла Rename-Computers-List.csv:

Рядом с файлом разместим сам скрипт следующего содержания:

Rename-Computers-CSV.ps1
$File = $PSScriptRoot + "\Rename-Computers-List.csv"
#
 If(![System.IO.File]::Exists($File)) {       
     Write-Host -ForegroundColor Red "`nCSV file doesn't exist!`nCheck path : "$File
     Break
}
#      
$DomainCred = Get-Credential -Message "Enter domain admin account (DOMAIN\login)"
$LocalCred = Get-Credential -Message "Enter computer admin account (DOMAIN\login)"
$computerList = Import-Csv -Path $File -Delimiter "," -Header OldName,NewName
ForEach ($Computer in $computerList)
{
    Write-Host "`nProcessing:"$Computer.OldName
    If (Test-Connection -Computername $Computer.OldName -BufferSize 16 -Count 1 -Quiet) 
    {
     Write-Host "Ping OK. Renaming..."
     Rename-Computer -ComputerName $Computer.OldName `
                     -NewName $Computer.NewName `
                     -LocalCredential $LocalCred `
                     -DomainCredential $DomainCred `
                     -Force
    } 
    Else 
    {
     Write-Host -ForegroundColor Red "Host unavailable"
    }
}

Процедура переименования компьютеров в домене Active Directory подразумевает наличие административных прав, как на уровне компьютера, который переименовывается, так и на уровне объекта компьютера в каталоге AD. На практике встречаются организации, где эти разные уровни прав разделены между отдельными административными учётными записями. Данный скрипт учитывает такое разделение и отдельно запрашивает учётную запись уровня администратора объектов в домене …

… а затем учётную запись администратора рабочих станций для возможности удалённого подключения к ним …

После запроса учётных данных выполняется проверка наличия файла Rename-Computers-List.csv, затем по полученному из этого файла списка компьютеров (перед попыткой переименования) проверяется доступность каждого отдельного компьютера в сети.

По каждому компьютеру скрипт выдаст сообщение о результате проверки доступности, и, в случае доступности, сообщит о результате переименования.

Если компьютер окажется недоступен (или имя компьютера не сможет быть разрешено в DNS в IP-адрес), мы получим ошибку о недоступности хоста:

Обратите внимание на то, что скрипт не инициирует перезагрузки удалённых компьютеров после переименования, хотя командлет Rename-Computer такую возможность имеет при добавлении параметра -Restart.

Перед более массовым переименованием рекомендуется протестировать работу скрипта на небольшой группе компьютеров.


Проверено на следующих конфигурациях:

Версия PS на сервере Версия ОС на клиентах
PowerShell 5.1.18362.752 Windows 10 Pro 10.0.18363

Автор первичной редакции:
Алексей Максимов
Время публикации: 11.09.2020 16:43