You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server查询防火墙规则确认443、80端口是否被封禁

问题排查与解决方法

原命令错误原因

  • 过滤逻辑位置错误:80端口的过滤规则被写在了Format-Table的自定义列表达式中,仅会让非80端口规则的LocalPort列为空,不会过滤无关规则,因此输出了全量防火墙规则,不符合需求
  • 重复调用接口:每条规则都多次调用Get-NetFirewallPortFilter接口,执行效率极低
  • 缺少443端口检测逻辑:原命令仅涉及80端口相关逻辑,未包含443端口的校验逻辑

可用实现代码

1. 列出所有阻止80端口入站的规则

# 筛选所有启用的、入站方向、动作为阻止、且本地端口包含80的防火墙规则
Get-NetFirewallRule -Enabled True -Direction Inbound -Action Block | 
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 80 -or $_.LocalPort -eq 'Any' } |
ForEach-Object {
    $portFilter = $_
    $rule = $portFilter | Get-NetFirewallRule
    [PSCustomObject]@{
        Name = $rule.Name
        DisplayName = $rule.DisplayName
        DisplayGroup = $rule.DisplayGroup
        Protocol = $portFilter.Protocol
        LocalPort = $portFilter.LocalPort
        RemotePort = $portFilter.RemotePort
        RemoteAddress = ($rule | Get-NetFirewallAddressFilter).RemoteAddress
        Enabled = $rule.Enabled
        Profile = $rule.Profile
        Direction = $rule.Direction
        Action = $rule.Action
    }
} | Format-Table -AutoSize

2. 检测443端口是否被入站封禁

# 检测443端口是否被入站阻止
$block443Rules = Get-NetFirewallRule -Enabled True -Direction Inbound -Action Block | 
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 443 -or $_.LocalPort -eq 'Any' }
if ($block443Rules) {
    Write-Host "检测到存在阻止443端口入站的防火墙规则,规则如下:"
    $block443Rules | ForEach-Object { ($_ | Get-NetFirewallRule).DisplayName }
} else {
    Write-Host "未找到直接阻止443端口入站的启用规则"
}

内容的提问来源于stack exchange,提问作者Bryan-Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 19:39:03