ZetCode

PowerShell Disable-NetFirewallRule

最后修改:2025 年 2 月 15 日

本文介绍PowerShell中的Disable-NetFirewallRule cmdlet。它用于禁用现有的Windows防火墙规则。此cmdlet是NetSecurity模块的一部分。

防火墙规则基础知识

Windows防火墙规则控制进出您计算机的网络流量。每条规则都有名称、方向、操作和协议等属性。规则可以启用或禁用以控制其效果。Disable-NetFirewallRule cmdlet可修改规则状态。

基本的Disable-NetFirewallRule用法

禁用防火墙规则最简单的方法是使用其名称。使用-Name参数后跟规则名称。该规则将被禁用但不会被删除。您可以使用Get-NetFirewallRule进行验证更改。

disable1.ps1
Disable-NetFirewallRule -Name "Remote Desktop - User Mode (TCP-In)"

此命令禁用远程桌面入站规则。该规则仍然存在于防火墙配置中,但不会处于活动状态。修改防火墙规则需要管理员权限。

按名称禁用多个规则

您可以通过提供多个名称来一次禁用多个规则。用逗号分隔规则名称。可以使用通配符来匹配多个规则。这对于对相关规则进行批量操作很有用。

disable2.ps1
Disable-NetFirewallRule -Name "Remote*", "CoreNet*"

此命令禁用所有以“Remote”或“CoreNet”开头的规则。该操作同时影响多个规则。在禁用规则之前,请务必先进行验证。

PS C:\> .\disable2.ps1

Name                  : Remote Desktop - User Mode (TCP-In)
Enabled               : False
Direction             : Inbound
Profile               : Any
Action                : Allow

Name                  : Core Networking - DNS (UDP-Out)
Enabled               : False
Direction             : Outbound
Profile               : Any
Action                : Allow

按显示名称禁用规则

也可以使用规则的显示名称来禁用规则。-DisplayName参数接受通配符的的部分匹配。当您知道规则的显示文本但不知道其确切名称时,这将很有帮助。

disable3.ps1
Disable-NetFirewallRule -DisplayName "File and Printer Sharing*"

此命令禁用所有显示名称以“文件和打印机共享”开头的规则。星号用作通配符进行部分匹配。显示名称通常比规则名称提供更易读的描述。

通过管道输入禁用规则

可以通过将规则从Get-NetFirewallRule管道化来禁用规则。这允许在禁用之前进行过滤。您可以将其与Where-Object结合使用进行复杂过滤。管道方法对于选择性操作非常强大。

disable4.ps1
Get-NetFirewallRule -Direction Inbound | Disable-NetFirewallRule

此命令禁用所有入站防火墙规则。Get-NetFirewallRule cmdlet检索规则,然后将它们管道传递给Disable-NetFirewallRule。对类似这样的广泛操作要谨慎。

禁用带确认的规则

为了安全起见,您可以在禁用规则之前添加确认提示。使用-Confirm参数请求用户批准。这可以防止意外修改。提示会显示哪些规则将受到影响。

disable5.ps1
Disable-NetFirewallRule -Name "Remote*" -Confirm

此命令在禁用任何匹配规则之前会提示确认。用户必须输入“Y”才能继续,或输入“N”取消。推荐在生产环境中使用此方法。

来源

PowerShell 文档

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

作者

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

列出 所有 PowerShell 教程