ファイアウォール設定を確認する

ファイアウォールの設定f:id:aka_Akatsuki:20180819162046j:plain

 

ファイアウォールの詳細設定をcmdletで確認できれば、設定資料としても残せると

思いつき、調べてみた。

 

Get-NetFireWallRule が該当しそうだ。実行してみると、「それっぽい」結果が表示。

f:id:aka_Akatsuki:20180819160424j:plain

 

一覧表示が見やすいので、Format-Table というcmdlet で見やすくする。

エイリアスは「ft」(別名表記)できるので

 Get-NetFireWallRule | ft 

f:id:aka_Akatsuki:20180819160714j:plain

 

情報おおいね ~ 

表示可能なプロパティを確認するため、Get-Member cmdLet を利用。 

f:id:aka_Akatsuki:20180819161123j:plain

 

出力する情報は、「名前、プロトコル、ポート番号」に絞って…

と思いきや、プロパティを確認するが、「プロトコル、ポート番号」が見つからない。

 

ん〜  

プロパティの中にオブジェクト ぽい 変数があるので

これを、参照できればと思っていたら、そのものずばりなcmdlet を発見。

 

Get-NetFireWallPortFilter

 

確認しやすくするために、

行数をへらしてパイプラインで結果を渡せばどうなるか?

 

Get-NetFireWallRule -DisplayName “*Edge*” | Get-NetFireWallPortFilter 

結果は…

f:id:aka_Akatsuki:20180819161330j:plain

プロトコルとポート番号はそれっぽいが、「何の定義か不明… 」orz

 

もー1度、ドキュメントを確認 ……

1行だけではどうにもならない?

 

バッチファイルのようにpsファイルが作成できるので、こんなコードを作成してみる。

 

$Wrt = "DisplayName, Protocol, LocalPort `r`n"

forEach ($Fir in Get-Netfirewallrule -Enabled True ) {
    $Wrt = $Wrt + $Fir.displayName

    $prt = $Fir | Get-NetFirewallPortFilter

    $Wrt = $Wrt + ", " + $prt.Protocol + ", " + $prt.LocalPort + "`r`n"

}

$Wrt | Out-File c:\FireWallConf.csv -Encoding default

 

これで、csvファイルに出力させて完成。 (^^)/

多分、もう少し簡単な方法もあるかもしれないな〜

 

 

おまけ

  後でファイアウォール詳細設定の画面をみてみたら、右脇にに

「エクスポート」機能を発見   (*゚▽゚*)/

      f:id:aka_Akatsuki:20180819162034j:plain

あるじゃん …   列も編集できるしある程度の絞り込みもできる。

 

今回利用したcmdlet 

  Get-NetFireWallRule

  Get-NetFireWallPortFilter

  Format-Table

  Out-File

  

教訓

  画面はよく見ましょう!

 でも、Power Shell の利用環境や勘所が少しわかったような気がする。