#author("2019-03-24T09:45:55+00:00","default:haikikyou","haikikyou")
[[PowerShell]]
PowerShellを使えば、FireWallルールもコマンドレットで簡単に定義することができる。FireWallは、XX-NetFireWallXXで定義されるコマンドレット群を使用する。
* FireWallルールの追加 [#f280124b]
以下は、ローカルポート5432へのアクセスをブロックするルールの追加例である。
#geshi(powershell){{{
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で可能。
#geshi(powershell){{{
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ルールの削除 [#m401b6cf]
Remove-NetFireWallRuleで可能。
#geshi(powershell){{{
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
}}}
* 参考リンク [#fe2add1c]
- https://docs.microsoft.com/en-us/powershell/module/netsecurity/New-NetFirewallRule?view=win10-ps