【 Get-NetFirewallPortFilter 】コマンドレット―― Windows Defenderファイアウォールのポートフィルターを取得するWindows PowerShell基本Tips(53)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Get-NetFirewallPortFilter」コマンドレットを解説します。

» 2022年12月15日 05時00分 公開
[後藤諭史@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Windows10」やWindows 11」、Windows Serverに標準搭載されている「Windows Defenderファイアウォール」で使用されるポートフィルターを取得する「Get-NetFirewallPortFilter」コマンドレットです。

Get-NetFirewallPortFilterコマンドレットとは?

 本連載第52回で紹介した「Get-NetFirewallAddressFilter」コマンドレットが「Windows Defenderファイアウォール」に設定されているアドレスフィルターを取得するように、「Get-NetFirewallPortFilter」はポリシーに設定された送信元ポート番号、送信先ポート番号といったポートフィルターを取得するコマンドレットです。

Get-NetFirewallPortFilterコマンドレットの書式

Get-NetFirewallPortFilter [オプション]


Get-NetFirewallPortFilterコマンドレットの主なオプション

オプション 意味
-All 全てのアドレスフィルターを取得する場合に指定する。省略可能
-Protocol 取得したいポートフィルターのプロトコルを指定する。省略可能
-AssociatedNetFirewallRule 取得したいポートフィルターが設定されたポリシーを指定する。省略可能
-PolicyStore ポートフィルターの取得先(ActiveStore/PersistentStore)を指定する。省略可能。省略時はPersistentStoreを取得する


特定のポリシーにひも付いたポートフィルターを取得する

 特定のポリシーにひも付いたポートフィルターを取得する場合は、本連載第52回で紹介したGet-NetFirewallAddressFilterコマンドレット同様、「-AssociatedNetFirewallRule」オプションを「Get-NetFirewallRule」コマンドレットと併用します(画面1)。なお、Get-NetFirewallPortFilterコマンドレットは管理者権限で実行する必要があります。

コマンドレット実行例

$Firewall_Rule = Get-NetFirewallRule -Name "FPS-SMB-In-TCP"
Get-NetFirewallPortFilter -AssociatedNetFirewallRule $Firewall_Rule

画面1 画面1 ポリシー名「FPS-ICMP4-ERQ-In」にひも付けられたアドレスフィルターを取得した

 また、Get-NetFirewallRuleコマンドレットとGet-NetFirewallPortFilterコマンドレットをパイプ(|)でつないで実行することも可能です(画面2)。

コマンドレット実行例

Get-NetFirewallRule -Name "FPS-ICMP4-ERQ-In" | Get-NetFirewallPortFilter

画面2 画面2 Get-NetFirewallRuleコマンドレットとGet-NetFirewallPortFilterコマンドをパイプでつないで実行した結果


特定のローカルポート宛てのポートフィルターを取得する

 特定のローカルポート宛てのポートフィルターが設定されているポリシーは、「Where-Object」コマンドレットを併用し、続いてGet-NetFirewallRuleコマンドレットとパイプでつなぐことで取得可能です(画面3)。

コマンドレット実行例

Get-NetFirewallPortFilter | Where-Object -FilterScript { $_.LocalPort -eq "3389" } | Get-NetFirewallRule

画面3 画面3 ローカルポート番号3389が指定されているポートフィルターを取得し、これを使用しているポリシー名を取得した


ポートフィルターを使用しているポリシーを取得する

 Get-NetFirewallPortFilterコマンドレットを「Format-List *」とパイプでつないで実行することで、全てのオブジェクトを表示できます。この中の「InstanceID」が、使用しているポリシー名を表しています(画面4)。

画面4 画面4 「InstanceID」が、使用しているポリシー名を表している

 従って、Format-Listコマンドレットで表示するプロパティを指定することで、ポートフィルターの内容と使用しているポリシー名を取得することができます(画面5)。

コマンドレット実行例

Get-NetFirewallPortFilter | fl Protocol,LocalPort,RemotePort,InstanceID

画面5 画面5 ポートフィルターの内容と使用しているポリシー名をリスト形式で取得した


特定のプロトコルを使用するポートフィルターを取得する

 Windows Defenderファイアウォールはプロトコルも指定可能なため、Get-NetFirewallPortFilterコマンドレットでもプロトコルを指定することが可能です(画面6)。

 プロトコルは「番号」もしくは「名前」(TCP、UDP、ICMPv4、ICMPv6)を指定できますが、名前が設定されているプロトコルは番号(TCPであれば「6」)を指定しても「指定されたオブジェクトが見つからない」となるため、注意が必要です。

コマンドレット実行例

Get-NetFirewallPortFilter -protocol 2 | fl Protocol,LocalPort,RemotePort,InstanceID

画面6 画面6 プロトコル番号「2」(IGMP:Internet Group Management)を指定してポートフィルターを取得した

筆者紹介

後藤 諭史(ごとう さとし)

Microsoft MVP for Cloud and Datacenter Management(2012-2023)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。