===== Удалённое переименование доменных компьютеров по списку из CSV ===== {{:powershell:remote-windows-management:pasted:20200911-173446.png }} Для возможности удалённого централизованного переименования выборочного множества компьютеров под управлением **Windows 10** в домене **Active Directory** сначала потребуется подготовить список компьютеров, подлежащих переименованию, в формате CSV в файл, например, с именем ''Rename-Computers-List.csv''. Файл будет содержать в каждой отдельной строке старое и новое имя компьютера через разделитель - запятую. Первая строка файла должна остаться пустой. Пример заполненного файла ''Rename-Computers-List.csv'': {{ :powershell:remote-windows-management:pasted:20200911-165649.png }} Рядом с файлом разместим сам скрипт следующего содержания: $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. На практике встречаются организации, где эти разные уровни прав разделены между отдельными административными учётными записями. Данный скрипт учитывает такое разделение и отдельно запрашивает учётную запись уровня администратора объектов в домене ... {{ :powershell:remote-windows-management:pasted:20200911-170215.png }} ... а затем учётную запись администратора рабочих станций для возможности удалённого подключения к ним ... {{ :powershell:remote-windows-management:pasted:20200911-170321.png }} После запроса учётных данных выполняется проверка наличия файла ''Rename-Computers-List.csv'', затем по полученному из этого файла списка компьютеров (перед попыткой переименования) проверяется доступность каждого отдельного компьютера в сети. По каждому компьютеру скрипт выдаст сообщение о результате проверки доступности, и, в случае доступности, сообщит о результате переименования. {{ :powershell:remote-windows-management:pasted:20200911-171335.png }} Если компьютер окажется недоступен (или имя компьютера не сможет быть разрешено в DNS в IP-адрес), мы получим ошибку о недоступности хоста: {{ :powershell:remote-windows-management:pasted:20200911-171343.png }} Обратите внимание на то, что скрипт не инициирует перезагрузки удалённых компьютеров после переименования, хотя командлет [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/rename-computer?view=powershell-5.1|Rename-Computer]] такую возможность имеет при добавлении параметра ''-Restart''. Перед более массовым переименованием рекомендуется протестировать работу скрипта на небольшой группе компьютеров. ---- Проверено на следующих конфигурациях: ^ Версия PS на сервере ^ Версия ОС на клиентах ^ | PowerShell 5.1.18362.752 | Windows 10 Pro 10.0.18363 | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 11.09.2020 16:43 {{tag>Powershell "Windows 10" "Active Directory" CSV}} ~~DISCUSSION~~