繁体   English   中英

Powershell关于异常的继续脚本

[英]Powershell continue script on Exception

我是超级新手。 我写了这个小脚本来查找服务器列表中的DNS条目。 当我使用多个计算机名运行时,它工作正常,没有任何问题。 当它处理无效的主机名时,它会被catch块捕获,但是脚本只是终止而不是继续下一个主机名。 我在这里做错了什么?

function Resolve-Hostname
{
[CmdletBinding()]
Param
(
    # One or more compternames
    [Parameter(Mandatory=$true,
               ValueFromPipelineByPropertyName=$true,
               Position=0)]
    [string[]]$Computername
)

Begin
{
    $dns = Get-WmiObject win32_networkadapterconfiguration | Where-Object {$_.DNSHostname -ne $null} |  Select-Object DNS
    Write-verbose "DNS suffix order used -"
    $DNSDomainSuffixSearchOrder = $dns | Select-Object DNSDomainSuffixSearchOrder
    Write-Verbose ( $DNSDomainSuffixSearchOrder | ft -AutoSize | Out-String )
    Write-Verbose "DNS Servers order used -"
    $DNSServerSearchOrder = $dns | Select-Object -ExpandProperty DNSServerSearchOrder
    Write-Verbose ($DNSServerSearchOrder | Out-String )
}
Process
{
    try 
    {
        foreach ($computer in $Computername)
        {
            $dnsreport = [System.Net.Dns]::Resolve("$computer") 
            $dns = [pscustomobject]@{
                Hostname    = $computer
                DNS_Suffix  = $dnsreport.HostName.Split('.',2)[1]
                DNSHostname = $dnsreport.HostName
                IPAddress   = $dnsreport.AddressList.ipaddresstostring -join ", "
                Alias       = $dnsreport.Aliases
            }
            $dns
        }
    }
    catch
    {
        $dns = [pscustomobject]@{
                Hostname    = $computer
                DNS_Suffix  = '-'
                DNSHostname = '-'
                IPAddress   = '-'
                Alias       = '-'
        }
        $dns
    }
}
End
{
}
}

您的foreach位于try块内,因此,当发生异常时,它将转到循环外的catch块。 trycatch放入foreach循环中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM