Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


powershell:remote-windows-management:powershell-bulk-remote-renaming-of-domain-computers-with-list-from-csv-file

Удалённое переименование доменных компьютеров по списку из 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

Обсуждение

DenDen, 11.09.2020 18:26
Вот бы с переименованием или наоборот вместо переименования смену IP сделать, бо для серверов в домене могут быть траблы, а просто выводить из домена, переименовывать сервер(или вместо переименовывания удалять из домена) и потом вводить с новым IP как-то стрёмно(
Алексей МаксимовАлексей Максимов, 11.09.2020 18:29
Не совсем понимаю, как связано переименование и смена IP. Это две разные операции.
AlektroNikAlektroNik, 12.09.2020 17:54
Алексей, немного не по теме. Уже давно ищу решение, может Вы подскажите. 😭

Как в PowerShell на удаленном компьюторе получить права системы или админа? Аналогично sudo или psexec.

Пока я знаю только вариант создания задачи в планировщике и запуск ее от имени системы. Но это не очень интерактивно и как-то немного извращенно на мой взгляд.
Алексей МаксимовАлексей Максимов, 12.09.2020 18:38
Удалённый захват привилегий с помощью PowerShell ?? Нет, не подскажу.
Ваш комментарий:
 

powershell/remote-windows-management/powershell-bulk-remote-renaming-of-domain-computers-with-list-from-csv-file.txt · Последнее изменение: 11.09.2020 17:34 — Алексей Максимов