如何在PowerShell中查看防火墙规则的详细信息?
美国、香港服务器
如何在PowerShell中查看防火墙规则的详细信息?
08-06 来源:
1. 查看单条规则完整详情(已知规则名称)
powershell
Get-NetFirewallRule -DisplayName "规则显示名称" | Format-List *
示例:
powershell
Get-NetFirewallRule -DisplayName "Block_BadIP" | Format-List *
Format-List * 会输出所有属性:方向、动作、端口、远程 IP、本地 IP、协议、启用状态、配置文件等。
2. 同时查看【规则 + 远程 IP / 本地 IP / 端口】(最实用)
单纯 Get-NetFirewallRule 看不到 IP 与端口,需要搭配过滤器:
powershell
# 获取规则 + 地址筛选(远程IP、本地IP)
Get-NetFirewallRule -DisplayName "规则名称" | Get-NetFirewallAddressFilter
# 获取规则 + 端口筛选(本地端口、远程端口、协议)
Get-NetFirewallRule -DisplayName "规则名称" | Get-NetFirewallPortFilter
3. 批量列出所有【阻止规则】并展示拦截 IP(适配你排查拉黑 IP 场景)
powershell
Get-NetFirewallRule -Enabled True -Action Block | ForEach-Object {
$rule = $_
$addr = $rule | Get-NetFirewallAddressFilter
$port = $rule | Get-NetFirewallPortFilter
[PSCustomObject]@{
规则名 = $rule.DisplayName
方向 = $rule.Direction
操作 = $rule.Action
协议 = $port.Protocol
本地端口 = $port.LocalPort
远程端口 = $port.RemotePort
被拦截远程IP = $addr.RemoteAddress
本地IP限制 = $addr.LocalAddress
是否启用 = $rule.Enabled
}
}
4. 检索包含指定 IP 的所有防火墙规则
把 111.222.33.44 换成你要排查的 IP
powershell
$searchIP = "111.222.33.44"
Get-NetFirewallRule | ForEach-Object {
$filter = $_ | Get-NetFirewallAddressFilter
if ($filter.RemoteAddress -match $searchIP) {
Write-Host "`n====================="
Write-Host "匹配规则:$($_.DisplayName)"
$_ | Format-List DisplayName,Direction,Action,Enabled
Write-Host "远程IP列表:$($filter.RemoteAddress)"
}
}
5. 常用筛选参数示例
powershell
# 只看入站规则
Get-NetFirewallRule -Direction Inbound
# 只看出站规则
Get-NetFirewallRule -Direction Outbound
# 只看阻止规则
Get-NetFirewallRule -Action Block
# 只看允许规则
Get-NetFirewallRule -Action Allow
# 只看启用中的规则
Get-NetFirewallRule -Enabled True
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快