检查IP是否已列入白名单?

时间:2016-06-17 10:08:13

标签: powershell iis

我正在使用此脚本块列入白名单IP:

invoke-command -computername $($server.text) -credential c\r {
    param($ip, $mask, $boolean, $url)

    Set-Location "c:\windows\system32\inetsrv";
    .\appcmd.exe set config "$($url)" -section:system.webServer/security/ipSecurity /+"[ipAddress='$($ip)',allowed='$($boolean)',subnetMask='$($mask)']" /commit:apphost    
} -ArgumentList $ip.Text, $mask.Text, $allowed, $url.Text

如果给定的IP已经列入白名单,是否有办法检查(使用appcmd)?

如果我使用此命令:

.\appcmd.exe list config "$($url)" -section:system.webserver/security/ipsecurity

我可以查看配置文件的<system.webserver><security><ipsecurity>部分。如何从那里获取数组中的IP?

2 个答案:

答案 0 :(得分:1)

$ipsettings = [xml](.\appcmd.exe list config "$($url)" -section:system.webserver/security/ipsecurity)

将生成PowerShell XmlNode对象。您可以通过各种方法进行搜索。要获得IP地址的简单列表,请使用

$ipsettings.SelectNodes("//ipSecurity/add/@ipAddress") | Select-Object -ExpandProperty "#text"

要检查单个地址,请使用

$ip = "192.12.231.22"
$resultNode = $ipSettings.SelectSingleNode("//ipSecurity/add[@ipAddress='$ip' and @allowed='true']")
$resultNode -ne $null

答案 1 :(得分:0)

实现这一目标的正确方法是:

将值放入xml对象:

$ipsettings = [xml](.\appcmd.exe list config "$($url)" -section:system.webserver/security/ipsecurity)

然后访问所需的节点(在本例中为ipaddress):

$ipsettings.SelectNodes("//add") | Select-Object -ExpandProperty "ipaddress"

上面的答案非常类似于此(感谢他指导我),但这对我有用。

https://www.simple-talk.com/sysadmin/powershell/powershell-data-basics-xml/

阅读这篇精彩文章。