为什么Get-NetFirewallRule没有显示防火墙规则的所有信息?

时间:2017-02-08 10:25:36

标签: powershell windows-firewall

我正在尝试查找是否已存在具有相同名称,相同配置的防火墙规则,例如:localport。

所以我使用Get-NetFirewallRule列出所有规则,但返回的规则不包含端口信息,也缺少其他一些信息。我在哪里可以找到规则的所有配置。以下是返回的属性:

Name
DisplayName
Description
DisplayGroup
Group
Enabled
Profile
Platform
Direction
Action
EdgeTraversalPolicy
LooseSourceMapping
LocalOnlyMapping
Owner
PrimaryStatus
Status
EnforcementStatus
PolicyStoreSource
PolicyStoreSourceType

4 个答案:

答案 0 :(得分:3)

要查找防火墙规则中已有的端口号,可以使用其他cmdlet Get-NetFirewallPortFilter

Info

使用Get-NetFirewallRule过滤要查看的规则子集并将其传递到上述cmdlet。例如:

Get-NetFirewallRule -DisplayName "SQL Broker Service" | Get-NetFirewallPortFilter

听起来像你所追求的属性是localport。

答案 1 :(得分:0)

使用Select-Object Cmdlet显示所有属性

这将只显示第一个,所以你不会被文字淹没,随意删除" -First 1"根据需要

Get-NetFirewallRule | select -First 1 -Property *

然而,调查看起来似乎没有关于端口的信息,进一步研究它 - 您可能需要使用Get-NetFirewallPortFilter并通过instanceid匹配它们。如果您需要帮助,我需要更多信息来了解您要完成的任务。

答案 2 :(得分:0)

我认为许多人(包括我在内)最近都不了解的是,Get-NetFirewall * Filter命令提供了快速的快捷方式来搜索防火墙规则,就像其他命令中的-filter选项一样。如果要执行此操作,将需要很长时间:

Get-NetFirewallRule | Get-NetFirewallPortFilter | Where LocalPort -eq 3389

这几乎是即时的:

Get-NetFirewallPortFilter | Where LocalPort -eq 3389

并且Get-NetFirewallPortFilter实际上在InstanceID属性中返回防火墙规则的名称,默认情况下未显示。这就是为什么您可以将Get-NetFirewallPortFilter通过管道传递回Get-NetFirewallRule。

答案 3 :(得分:0)

使用以下命令列出所有列表。

Get-NetFirewallRule| Where { $_.Enabled -eq $True } |
Format-Table -Property Name,
DisplayName,
DisplayGroup,
@{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},
@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled,
Profile,
Direction,
Action

输出如下所示 enter image description here