PowerShellを使えば、FireWallルールもコマンドレットで簡単に定義することができる。FireWallは、XX-NetFireWallXXで定義されるコマンドレット群を使用する。
FireWallルールの追加 †
以下は、ローカルポート5432へのアクセスをブロックするルールの追加例である。
PS C:\> New-NetFirewallRule -Name myrule -DisplayName myrule -Enabled True -Action Block -LocalPort 5432 -Protocol TCP Name : myrule DisplayName : myrule Description : DisplayGroup : Group : Enabled : True Profile : Any Platform : {} Direction : Inbound Action : Block EdgeTraversalPolicy : Block LooseSourceMapping : False LocalOnlyMapping : False Owner : PrimaryStatus : OK Status : 規則は、ストアから正常に解析されました。 (65536) EnforcementStatus : NotApplicable PolicyStoreSource : PersistentStore PolicyStoreSourceType : Local
定義したルールを見る場合は、Get-NetFireWallRule
で可能。
PS C:\> Get-NetFirewallRule -Name myrule Name : myrule DisplayName : myrule Description : DisplayGroup : Group : Enabled : True Profile : Any Platform : {} Direction : Inbound Action : Block EdgeTraversalPolicy : Block LooseSourceMapping : False LocalOnlyMapping : False Owner : PrimaryStatus : OK Status : 規則は、ストアから正常に解析されました。 (65536) EnforcementStatus : NotApplicable PolicyStoreSource : PersistentStore PolicyStoreSourceType : Local
FireWallルールの削除 †
Remove-NetFireWallRule
で可能。
PS C:\> Remove-NetFirewallRule -Name myrule PS C:\> Get-NetFirewallRule -Name myrule Get-NetFirewallRule : プロパティ 'InstanceID' が 'myrule' の MSFT_NetFirewallRule オブジェクトが見つかりません。プロパティの値を確認してから再試行してください。 発生場所 行:1 文字:1 + Get-NetFirewallRule -Name myrule + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (myrule:String) [Get-NetFirewallRule], CimJobException + FullyQualifiedErrorId : CmdletizationQuery_NotFound_InstanceID,Get-NetFirewallRule