У меня есть следующий скрипт powershell, который циклически просматривает список имен хостов и изменяет настройки DNS для активных интерфейсов:
$servers = Get-Content C:\users\kevin.todd\desktop\serverlist.txt
foreach($server in $servers)
{
Write-Host "Connect to $server..."
$nics = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $server -ErrorAction Inquire | Where{$_.IPEnabled -eq "TRUE"}
$newDNS = "10.100.10.81","10.100.10.82"
foreach($nic in $nics)
{
Write-Host "`tExisting DNS Servers " $nic.DNSServerSearchOrder
$x = $nic.SetDNSServerSearchOrder($newDNS)
if($x.ReturnValue -eq 0)
{
Write-Host "`tSuccessfully Changed DNS Servers on " $server
}
else
{
Write-Host "`tFailed to Change DNS Servers on " $server
}
}
}
Проблема в том, что на некоторых хостах я получаю следующую ошибку:
Get-WmiObject: сервер RPC недоступен.(Исключение из HRESULT: 0x800706BA) В C: \ Documents and Settings \ user1 \ desktop \ changesnsserver.ps1: 20 char: 26 + $ nics = Get-WmiObject <<<< Win32_NetworkAdapterConfiguration -ComputerName $ server -ErrorAction Inquire |Где {$ _. IPEnabled -eq «ИСТИНА»} + CategoryInfo: InvalidOperation: (:) [Get-WmiObject], COMException + FullyQualifiedErrorId: GetWMICOMException, Microsoft.PowerShell.Commands.GetWmiObjectCommand <br>Существующие серверы DNS не могут вызвать существующий DNS-серверна нулевом выражении.В C: \ Documents and Settings \ user1 \ desktop \ changesnsserver.ps1: 30 char: 42 + $ x = $ nic.SetDNSServerSearchOrder <<<< ($ newDNS) + CategoryInfo: InvalidOperation: (SetDNSServerSearchOrder: String) [], RuntimeException+ FullyQualifiedErrorId: InvokeMethodOnNull </p>
И Powershell задает мне следующий вопрос:
Сервер RPC недоступен.(Исключение из HRESULT: 0x800706BA) [Y] Да [A] Да для всех [H] Команда остановки [S] Приостановить [?] Справка (по умолчанию «Y»):
Я бы хотеласценарий, чтобы просто ответить A - Да всем и продолжить выполнение сценария.Проблема в том, что он просто останавливает сценарий, пока я не введу вручную «A».Как я могу автоматически ответить и продолжить?