検索
連載

【 Remove-NetFirewallRule 】コマンドレット―― Windows Defenderファイアウォールのポリシーを削除するWindows PowerShell基本Tips(57)

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

Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

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

Remove-NetFirewallRuleコマンドレットとは?

 Windows Defenderファイアウォール」は、デフォルトで標準的なポリシーが用意されていますが、企業内ポリシーや利用するアプリケーションによって追加でポリシーを作成しなければならない場合があります。アプリケーションをアンインストールするタイミング、もしくはセキュリティポリシーが変更になった際には、作成したカスタムポリシーの削除が必要になることもあります。

 「Remove-NetFirewallRule」は、Windows Defenderファイアウォールのポリシーを削除するコマンドレットで、従来コマンドプロンプトで使用していた「netsh」コマンドの「netsh advfirewall firewall delete rule」オプション付き実行とほぼ同じものとなります。

Remove-NetFirewallRuleコマンドレットの書式

Remove-NetFirewallRule [オプション]


Remove-NetFirewallRuleコマンドレットの主なオプション

オプション 意味
-All 全てのポリシーを削除する際に指定する。省略可能
-DisplayName 削除したいポリシーの表示名を指定する。省略可能
-Name 削除したいポリシー名を指定する。省略可能
-Group 削除したいポリシーグループを指定する。省略可能
-DisplayGroup 削除したいポリシーグループの表示名を指定する。省略可能


ポリシーを全て削除する

 Remove-NetFirewallRuleコマンドレットをオプションなしで実行すると、設定されているポリシーを全て削除します(画面1)。なお、Remove-NetFirewallRuleコマンドレットは管理者権限で実行する必要があります。

コマンドレット実行例

Remove-NetFirewallRule

画面1
画面1 Remove-NetFirewallRuleコマンドレットをオプションなしで実行すると、ポリシーを全て削除する

 「Get-NetFirewallRule」コマンドレットを実行しても何も表示されないことから、全てのポリシーが削除されたことが分かります。

 デフォルトのポリシーを復元するには、GUIツール「セキュリティが強化されたWindows Defenderファイアウォール」の「既定のポリシーの復元」を実行します(画面2)。

画面2
画面2 「セキュリティが強化されたWindows Defenderファイアウォール」ツールの「既定のポリシーの復元」を実行するとデフォルトのポリシーを復元できる

 または、PowerShellで以下のコマンドレットを実行しても復元できます(画面3)。

コマンドレット実行例

(New-Object -ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()

画面3
画面3 PowerShellでもデフォルトのポリシーを復元できる


特定のポリシーを削除する

 Remove-NetFirewallRuleコマンドレットを「-DisplayName」オプション付きで実行すると、指定したポリシーだけを削除できます(画面4)。

コマンドレット実行例

Remove-NetFirewallRule -DisplayName "TestWeb_8080"

画面4
画面4 表示名「TestWeb_8080」を指定してポリシーを削除した


特定のリモートコンピュータに対する複数のポリシーを削除する

 リモートホストなど共通する要素を持つポリシーを一括削除したい状況もあります。この場合は、本連載第52回で紹介した「Get-NetFirewallAddressFilter」コマンドレットなどで削除したいポリシーを絞り込み、パイプ(|)でつないでRemove-NetFirewallRuleコマンドレットを実行することで、絞り込んだ複数のポリシーを一括削除できます(画面5)。

コマンドレット実行例

Get-NetFirewallAddressFilter  | Where-Object -FilterScript { $_.RemoteAddress -eq "192.168.0.10" } | Remove-NetFirewallRule

画面5
画面5 リモートホストアドレス「192.168.0.10」が設定されたポリシーを一括削除した

 上記実行例ではリモートアドレスを指定していますが、リモートポートやソースポートなど、他の要素を使用してポリシーを絞り込むことも可能です。また、現在使用していない(有効化していない)ポリシーは、「-Enable」オプションを利用することで一括削除が可能です(画面6)。

コマンドレット実行例

Remove-NetFirewallRule -Enabled False

画面6
画面6 使用していないポリシー(246ポリシー)を「-Enable」オプションを使用して一括削除した

筆者紹介

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る