Powershell 无法处理参数中的多个值
我正在尝试将多个IP地址添加到Windows防火墙中的规则中。出于某种原因,我在下面编写的脚本只添加了我指定的一个IP地址,似乎覆盖了另一个 以下是脚本:Powershell 无法处理参数中的多个值,powershell,Powershell,我正在尝试将多个IP地址添加到Windows防火墙中的规则中。出于某种原因,我在下面编写的脚本只添加了我指定的一个IP地址,似乎覆盖了另一个 以下是脚本: [CmdletBinding()] param ( [switch]$NormalHardening, [switch]$AcceptEULA, [switch]$AddCustomPort, [IPAddress[]]$AdditionalPorts ) foreach (
[CmdletBinding()]
param (
[switch]$NormalHardening,
[switch]$AcceptEULA,
[switch]$AddCustomPort,
[IPAddress[]]$AdditionalPorts
)
foreach ($Port in $AdditionalPorts)
{
Write-Host "Additional Ports added were: $Port"
Get-NetFirewallRule -DisplayName "HTTP" | Set-NetFirewallRule -RemoteAddress "10.0.0.0/8","172.16.0.0/12","192.168.0.0/16",$Port
}
我在命令行中输入:
.\test_additonal_ports.ps1 -NormalHardening -AdditionalPorts 32.25.48.97, 11.12.13.14
所以,我想添加两个IP…但是,它只添加其中一个
我得到的结果是:
然而,在Windows防火墙中,它只显示添加的IP之一…有什么想法可以同时添加这两个IP吗
您的语句在每次迭代中设置HTTP规则,因此您的循环设置地址列表 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 32.25.48.97
顺便说一句,您不应该命名参数
$AdditionalPorts
。它们是完全不同的东西,所以不要混淆它们。参数名$AdditionalAddresses
或$AdditionalIPRanges
更合适。谢谢..效果非常好。实际上,我本来打算更改名称,因为最初它是为了添加额外的端口而设计的……然后更改为地址。
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
11.12.13.14
$addr = '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16'
$addr += $AdditionalPorts
Get-NetFirewallRule -DisplayName 'HTTP' | Set-NetFirewallRule -RemoteAddress $addr