2016-05-26 26 views
1

Windowsファイアウォールのルールに複数のIPアドレスを追加しようとしています。何らかの理由で、私が以下に書いたスクリプトは、私が指定しているIPアドレスのうちの1つを追加するだけで、もう一方を上書きするようです。パラメータ内で複数の値を処理できません

これはスクリプトです:

[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 

、私は2つのIPアドレスを追加することにしたい...しかし、それだけで1を加算しますそのうちの。

私が得る結果がこれです:

enter image description here

ただし、Windowsファイアウォールではそれが唯一のIPアドレスのONEが追加...私は両方に追加することができますどのように任意のアイデアを示して?

enter image description here

答えて

3

あなたの文では、あなたのループが最初の反復でアドレスリスト

10.0.0.0/8 
172.16.0.0/12 
192.168.0.0/16 
32.25.48.97

を設定しますので、各反復でのHTTPルールを設定し、その後でそれを置き換える

10.0.0.0/8 
172.16.0.0/12 
192.168.0.0/16 
11.12.13.14

2回目の反復で。

ルールに含めるIPアドレスの完全なリストを作成し、ルールを一度更新します。

$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 

ところで、あなたはパラメータ$AdditionalPortsに名前を付けるべきではありません。 IP addressesportsは全く異なるものですので、混同しないでください。パラメータ名$AdditionalAddressesまたは$AdditionalIPRangesがより適切です。

+0

そのようなことに感謝します。私は実際には、最初は追加のポートを追加するように設計されていたので、名前を変更するつもりでした...そしてアドレスに変更されました。 – lara400

関連する問題