batでWindowsFirewallを無効化/有効化したかった話
はじめに
batからpowershellを呼び出してファイアウォールを無効化/有効化できるようにします。
コード
無効化用のbat「setFirewallDisable.bat」
@echo off
powershell Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
pause
有効化用のbat「setFirewallEnable.bat」
@echo off
powershell Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
pause
参考
動作イメージ
まずは有効化の状態
![](https://assets.st-note.com/img/1726858995-Xsi0VoOUbYgFteqyEnBkLpZl.png?width=1200)
無効化用bat「setFirewallDisable.bat」を右クリックし、「管理者として実行」を左クリック
![](https://assets.st-note.com/img/1726859272-9AIKG6SCsktuNxLfvYR1MogU.png?width=1200)
実行確認があるので、「はい」を左クリックする
![](https://assets.st-note.com/img/1726859358-28NgCSv1Ge60Hsbpy4Jt9dPc.png)
ファイアウォールが無効化された
![](https://assets.st-note.com/img/1726859447-73pP8uIWZOEYdf2ljGskrBCx.png?width=1200)
おわりに
ネットワーク周りの検証時にPC間でpingしようとして、片方向だけ通信できない場合はFirewallが原因であることが多いと思います。
また、一度無効化したと思ってもケーブルを繋げ変えたら有効化されてしまうことがあります(プライベートのみ無効化して、繋ぎ変えたらパブリックで上がった等)。そのため、複数人で作業する場合などは特にbatでまるっと無効化してしまうルールにした方が不要な切り分けが発生しないと思います。