Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 无法处理参数中的多个值_Powershell - Fatal编程技术网

Powershell 无法处理参数中的多个值

Powershell 无法处理参数中的多个值,powershell,Powershell,我正在尝试将多个IP地址添加到Windows防火墙中的规则中。出于某种原因,我在下面编写的脚本只添加了我指定的一个IP地址,似乎覆盖了另一个 以下是脚本: [CmdletBinding()] param ( [switch]$NormalHardening, [switch]$AcceptEULA, [switch]$AddCustomPort, [IPAddress[]]$AdditionalPorts ) foreach (

我正在尝试将多个IP地址添加到Windows防火墙中的规则中。出于某种原因,我在下面编写的脚本只添加了我指定的一个IP地址,似乎覆盖了另一个

以下是脚本:

[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