我正在尝试查找是否已存在具有相同名称,相同配置的防火墙规则,例如:localport。
所以我使用Get-NetFirewallRule
列出所有规则,但返回的规则不包含端口信息,也缺少其他一些信息。我在哪里可以找到规则的所有配置。以下是返回的属性:
Name DisplayName Description DisplayGroup Group Enabled Profile Platform Direction Action EdgeTraversalPolicy LooseSourceMapping LocalOnlyMapping Owner PrimaryStatus Status EnforcementStatus PolicyStoreSource PolicyStoreSourceType
答案 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