ZetCode

PowerShell Get-NetFirewallRule

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍 PowerShell 中的 Get-NetFirewallRule cmdlet。此 cmdlet 用于从本地计算机检索 Windows 防火墙规则。

防火墙规则基础知识

防火墙规则定义了如何过滤网络流量。每条规则都有名称、方向、操作和协议等属性。规则可以是入站的,也可以是出站的。它们可以根据各种条件允许或阻止流量。

Get-NetFirewallRule 基本用法

使用 Get-NetFirewallRule 的最简单方法是不带任何参数。这将列出系统上的所有防火墙规则。输出包括规则名称、启用状态和方向。每条规则都表示为一个防火墙对象。

firewall1.ps1
Get-NetFirewallRule

此命令检索所有防火墙规则。默认输出显示基本信息。可以使用其他参数查看更多详细信息。

按名称获取特定的防火墙规则

您可以通过名称检索特定的防火墙规则。使用 -DisplayName 参数后跟规则名称。支持通配符以进行部分匹配。这在搜索相关规则时非常有用。

firewall2.ps1
Get-NetFirewallRule -DisplayName "Remote Desktop*"

此命令返回所有名称以“远程桌面”开头的规则。对于 RDP 等复杂应用程序,可能会返回多条规则。

PS C:\> .\firewall2.ps1

Name                  : RemoteDesktop-UserMode-In-TCP
DisplayName           : Remote Desktop - User Mode (TCP-In)
Description           : Inbound rule for the Remote Desktop service to allow RDP traffic. [TCP 3389]
DisplayGroup          : Remote Desktop
Enabled               : True
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow

按启用状态获取防火墙规则

您可以根据规则是启用还是禁用来过滤规则。使用 $true 或 $false 值与 -Enabled 参数。这有助于识别防火墙配置中活动的或非活动的规则。

firewall3.ps1
Get-NetFirewallRule -Enabled $true

此命令返回所有启用的防火墙规则。仅显示防火墙配置中当前活动的规则。

获取详细的防火墙规则信息

要查看防火墙规则的所有属性,请将输出通过管道传递给 Format-List。这将显示完整的配置详细信息,包括协议和端口。您还可以使用 Select-Object 选择特定属性。

firewall4.ps1
Get-NetFirewallRule -DisplayName "File and Printer Sharing*" | Format-List *

此命令显示文件和打印机共享规则的所有属性。输出包括接口和安全等详细配置。

按方向过滤防火墙规则

您可以使用 -Direction 参数按流量方向过滤规则。有效值为 Inbound(入站)或 Outbound(出站)。这有助于分析影响防火墙特定流量流的规则。

firewall5.ps1
Get-NetFirewallRule -Direction Inbound | Where-Object { $_.Enabled -eq $true }

此命令列出了所有启用的入站防火墙规则。Where-Object cmdlet 过滤结果以仅显示活动规则。根据需要调整过滤器。

来源

PowerShell 文档

在本文中,我们介绍了 PowerShell 中的 Get-NetFirewallRule cmdlet。

作者

我叫 Jan Bodnar,是一位热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面有十多年的经验。

列出 所有 PowerShell 教程