Для исправления сложившейся ситуации можно обойти все компьютеры, у которых есть подобная проблема и исправить значания параметров реестра руками или, что более рационально, использовать следующий PowerShell-скрипт
#фильтр для включённых машин Filter Where-Online { $ping = new-object System.Net.NetworkInformation.Ping trap {Write-Verbose "ping error"; Continue} if ($ping.send($_).Status -eq "Success" ) { $_ } } function Registry-Fix { param ($strIP) #создание wmi объекта $reg = "\\"+$strIP+"\root\default:stdRegProv" $wmi = [wmiclass]$reg $hklm = 2147483650 #Чтение имени компьютера $KeyRead = "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\" $PropRead = "ComputerName" $ComputerName = $wmi.GetStringValue($hklm,$KeyRead,$PropRead).sValue #Исправление занчений реестра $KeyWrite = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" $ValueDomain = "domain.local" $ValueHostname = $ComputerName $wmi.SetStringValue($hklm,$KeyWrite,"Domain",$ValueDomain) $wmi.SetStringValue($hklm,$KeyWrite,"Hostname",$ValueHostname) $wmi.SetStringValue($hklm,$KeyWrite,"NV Domain",$ValueDomain) $wmi.SetStringValue($hklm,$KeyWrite,"NV Hostname",$ValueHostname) } #Имя DHCP-сервера $DHCP_SERVER = "dhcp" #Запрос всех арендованных адресов $ShowLeases = "netsh dhcp server \\$DHCP_SERVER scope 192.168.0.0 show clients 1" $AllLeases = Invoke-Expression $ShowLeases $LeaseClients = @() #Выделение строк и выбор необходимых IP-адресов for($i=8;$i -lt $AllLeases.Length-4;$i++) { $line = [regex]::split($AllLeases[$i],"\s{2,}") $IP = $line[0] $Name = $line[5] If ($Name.Length -eq 0) {$LeaseClients += $IP} } #Перебор компьютеров foreach ($comp in $LeaseClients | Where-Online) {Registry-Fix $comp}Если при выполнении запроса арендованных адресов появляется сообщение о том, что такая команда не найдена, то необходимо скачать Средства удалённого администрирования сервера или выполнить скрипт на том компьютере, на котором установлен DHCP-сервер.
Комментариев нет:
Отправить комментарий