powershell - 错误处理 - PowerShell 脚本

标签 powershell error-handling

我有以下 powershell 脚本,它循环浏览主机名列表并更改事件接口(interface)的 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 : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) At C:\Documents and Settings\user1\desktop\changednsserver.ps1:20 char:26 + $nics = Get-WmiObject <<<< Win32_NetworkAdapterConfiguration -ComputerName $server -ErrorAction Inquire | Where{ $_.IPEnabled -eq "TRUE"} + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
Existing DNS Servers You cannot call a method on a null-valued expression. At C:\Documents and Settings\user1\desktop\changednsserver.ps1:30 char:42 + $x = $nic.SetDNSServerSearchOrder <<<< ($newDNS) + CategoryInfo : InvalidOperation: (SetDNSServerSearchOrder:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull



Powershell 向我提出了以下问题:

The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) [Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):



我希望脚本只回答 A - Yes to all 并继续运行脚本。问题是它只是暂停脚本,直到我手动输入“A”。我怎样才能让它自动回答并继续?

最佳答案

那么简短的回答是不要告诉它首先停止:

$nics = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $server -ErrorAction 查询 |其中{$_.IPEnabled -eq "TRUE"}

尝试:

$nics = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $server -ErrorAction SilentlyContinue |其中{$_.IPEnabled -eq "TRUE"}

关于powershell - 错误处理 - PowerShell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031988/

相关文章:

powershell - 如何在不耗尽内存的情况下删除 Powershell 中的重复项?

powershell - 设置-AzureServiceDiagnosticsExtension : Cannot bind parameter 'StorageContext'

PowerShell 飞溅不起作用

c# - 为什么不尝试{} catch {}在C#中工作?

arrays - 如何在Laravel 5.4中验证数组

powershell - PowerShell函数未按预期运行

windows - 使用 PowerShell 的 IIS 输出缓存设置

excel - 虽然函数在错误处理程序中不起作用-VBA?

c# - 在 C# 中检查打印机状态?

javascript - 无法使用 'in'运算符在Symbol(react.element)错误中搜索 'toMap'