ZetCode

PowerShell New-NetFirewallRule

最后修改:2025 年 2 月 15 日

本文介绍PowerShell中的New-NetFirewallRule cmdlet。它在Windows中创建入站或出站防火墙规则。该cmdlet是NetSecurity模块的一部分。它提供了对Windows防火墙的精细控制。

防火墙规则基础知识

防火墙规则定义了如何过滤网络流量。规则可以根据各种条件允许或阻止流量。每条规则都有名称、方向、操作和协议规范。规则可以应用于特定的程序、端口或IP地址。Windows防火墙使用这些规则来保护系统。

创建基本的允许规则

此示例创建一个简单的入站防火墙规则。该规则允许TCP端口80上的流量。它适用于所有配置文件(域、专用、公用)。规则在创建后立即启用。

firewall1.ps1
New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP `
    -LocalPort 80 -Action Allow -Enabled True

该规则允许端口80上的入站HTTP流量。-Direction参数指定入站流量。-Protocol定义协议类型。-LocalPort设置端口号。-Action Allow允许流量。

为特定程序创建规则

此示例为特定可执行文件创建规则。该规则允许指定程序的出站流量。它仅适用于专用网络配置文件。该规则具有用于文档的自定义描述。

firewall2.ps1
New-NetFirewallRule -DisplayName "Allow MyApp" -Direction Outbound `
    -Program "C:\Apps\MyApp.exe" -Action Allow -Profile Private `
    -Description "Allows MyApp to communicate externally"

-Program参数指定应用程序路径。-Profile将规则限制为专用网络。-Description添加解释性文本。该规则仅影响来自指定可执行文件的流量。

创建具有IP限制的规则

此示例创建具有IP地址限制的规则。该规则仅允许来自特定IP的入站RDP流量。它使用-RemoteAddress参数定义允许的源。该规则默认处于禁用状态。

firewall3.ps1
New-NetFirewallRule -DisplayName "Restricted RDP" -Direction Inbound `
    -Protocol TCP -LocalPort 3389 -Action Allow -RemoteAddress "192.168.1.100,192.168.1.101" `
    -Enabled False

该规则将只允许来自两个IP地址的RDP访问。-RemoteAddress接受多个逗号分隔的IP。-Enabled False将规则创建为禁用状态。规则可以在需要时稍后启用。

创建与服务关联的规则

此示例创建与Windows服务关联的规则。该规则允许DNS服务的入站流量。它使用-Service参数链接到服务。该规则适用于所有网络配置文件。

firewall4.ps1
New-NetFirewallRule -DisplayName "Allow DNS Service" -Direction Inbound `
    -Protocol UDP -LocalPort 53 -Action Allow -Service Dnscache

该规则允许UDP端口53上的DNS流量。-Service链接到Dnscache服务。只有当服务运行时才允许流量。这比基于端口的规则提供了更精确的控制。

创建具有高级安全设置的规则

此示例创建具有高级安全设置的规则。它配置身份验证和加密要求。该规则使用IPSec进行安全通信。指定了多种安全选项。

firewall5.ps1
New-NetFirewallRule -DisplayName "Secure File Share" -Direction Inbound `
    -Protocol TCP -LocalPort 445 -Action Allow -Authentication Required `
    -Encryption Dynamic -LocalUser Any -RemoteUser "DOMAIN\FileUsers"

该规则允许具有安全要求的SMB流量。-Authentication强制执行IPSec身份验证。-Encryption启用动态加密。-RemoteUser将访问限制为特定的域用户。这创建了一个安全的文件共享规则。

来源

PowerShell 文档

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

作者

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

列出 所有 PowerShell 教程