Powershell 在try-catch中添加异常

Powershell 在try-catch中添加异常,powershell,exception,try-catch,Powershell,Exception,Try Catch,我有一个关于下面脚本的问题,脚本根据RBL列表检查多个邮件服务器,问题是一些列表(如hostkarma.junkemailfilter.com)有某些答案,这并不意味着IP实际上被列入黑名单 因此,我想在try..catch函数中添加一个异常,如果hostkarma.junkemailfilter.com以127.0.2.1回答,邮件服务器将不会进入$blacklistedOn 剧本: Param([string]$IP) $statusAlive = "ScriptRes:Host is a

我有一个关于下面脚本的问题,脚本根据RBL列表检查多个邮件服务器,问题是一些列表(如hostkarma.junkemailfilter.com)有某些答案,这并不意味着IP实际上被列入黑名单

因此,我想在
try..catch
函数中添加一个异常,如果hostkarma.junkemailfilter.com以127.0.2.1回答,邮件服务器将不会进入
$blacklistedOn

剧本:

Param([string]$IP)

$statusAlive = "ScriptRes:Host is alive:"
$statusDead = "ScriptRes:No answer:"
$statusUnknown     = "ScriptRes:Unknown:"
$statusNotResolved = "ScriptRes:Unknown host:"
$statusOk          = "ScriptRes:Ok:"
$statusBad         = "ScriptRes:Bad:"
$statusBadContents = "ScriptRes:Bad contents:"

$reversedIP = ($IP -split '\.')[3..0] -join '.'

$blacklistServers = @(
  "dnsbl-3.uceprotect.net";
  "dnsbl-2.uceprotect.net";
  "dnsbl-1.uceprotect.net";
  "ix.dnsbl.manitu.net";
  "bl.spamcop.net";
  "bl.spamcannibal.org";
  "b.barracudacentral.org";
  "ips.backscatterer.org";
  "dnsbl.sorbs.net";
  "cbl.abuseat.org";
  "all.spamrats.com";
  "black.uribl.com";
  "multi.surbl.org";
  "multi.uribl.com";
  "truncate.gbudb.net";
  "bl.blocklist.de";
  "dnsbl.inps.de";
  "bl.mailspike.net";
  "bl.spameatingmonkey.net";
  "db.wpbl.info";
  "dnsbl.justspam.org";
  "hostkarma.junkemailfilter.com";
  "mail-abuse.blacklist.jippg.org";
  "psbl.surriel.com";
  "spam.dnsbl.anonmails.de";
  "ubl.unsubscore.com";
  "cblless.anti-spam.org.cn";
  "cblplus.anti-spam.org.cn";
  "spam.pedantic.org";
  "dev.null.dk";
  "blackholes.five-ten-sg.com";
  "spamsources.fabel.dk";
  "zen.spamhaus.org";
  "spamguard.leadmon.net";
  "dialups.visi.com";
  "dnsbl.kempt.net";
  "dnsbl.dronebl.org";
  "no-more-funn.moensted.dk";
  "relays.bl.kundenserver.de";
)

$blacklistedOn = @()

foreach ($server in $blacklistServers) {
    $IPServer = "$reversedIP.$server"

    try {
        $null = [System.Net.Dns]::GetHostEntry($IPServer)
        $blacklistedOn += $server
    } catch { }
}

if ($blacklistedOn.Count -gt 0) {
    # The IP was blacklisted on one or more servers; send your email here.
    # $blacklistedOn is an array of the servers that returned positive results.
    Write-Host "$statusAlive"$blacklistedOn
} else {
    Write-Host "$statusDead"$blacklistedOn
}

当前,脚本将丢弃主机查找返回的任何内容。若要在返回特定响应时跳过地址,您需要将其分配给变量,并在实际将服务器添加到
$blacklistedOn
之前进行检查:

try {
    $addr = [Net.Dns]::GetHostEntry($IPServer)
    if (-not ($server -eq 'hostkarma.junkemailfilter.com' -and $addr.AddressList.IPAddressToString -contains '127.0.2.1')) {
      $blacklistedOn += $server
    }
} catch { }

这是什么类型的javascript?这看起来像某种.NET语言。这是我的错,是一个Poweshell脚本,只是在使用javascript时遇到了一些问题,所以我的脑海中仍然有JavaScriptp。非常感谢,我的PowerShell知识没有那么好。