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

为何PowerShell枚举Windows防火墙规则速度慢?求高效方案

更快获取Windows入站启用防火墙规则及端口过滤器的方法

问题分析

原代码执行缓慢的核心原因是:通过管道逐个将Get-NetFirewallRule的结果传递给Get-NetFirewallPortFilter,这会触发多次独立的WMI/CIM查询,累加了大量调用开销。直接通过CIM关联查询可以一次性拉取所需数据,大幅提升效率。

优化实现代码

以下代码通过Get-CimInstance直接关联防火墙规则与端口过滤器类,仅需一次查询即可获取目标数据,且普通用户账户默认拥有读取权限:

Measure-Command {
    $firewallData = Get-CimInstance -ClassName MSFT_NetFirewallRule -Filter "Enabled='True' AND Direction='Inbound'" |
        Join-CimInstance -ClassName MSFT_NetFirewallPortFilter -On RuleName
}

# 如需查看具体规则信息,可执行:
# $firewallData | Select-Object DisplayName, Protocol, LocalPort, RemotePort

效率提升原因

  • 一次性完成关联查询,避免了管道中逐个规则调用Get-NetFirewallPortFilter的多次查询开销
  • 直接调用CIM类查询,减少了NetSecurity模块cmdlet的包装层额外消耗

耗时验证

使用该方法,执行耗时通常会降至1秒以内(具体时长取决于系统中防火墙规则总数),远低于原方法的6秒+耗时。

内容的提问来源于stack exchange,提问作者Dennis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:20:00