我正在使用此脚本块列入白名单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?
答案 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/
阅读这篇精彩文章。