繁体   English   中英

如何删除大量防火墙规则(Windows server 2019)?

[英]How to delete huge number of firewall rules (Windows server 2019)?

我有 12 台服务器(会话主机),每台服务器上都有数万条防火墙规则。 规则在用户登录时创建,系统在注销时不会删除它们(可能是 WS2016 中已修复的错误,但在 2019 年又出现了)。

我曾尝试使用 powershell 的Remove-NetFirewallRule删除规则,但由于性能原因没用。 删除 40k 条规则需要 33 小时(每分钟 20 条规则)。 现在我正在尝试使用 .netsh.exe 来实现它,它更快(每分钟 1000 条规则),但我无法找到如何过滤掉配置文件中带有“任何”的规则(我想保留这些规则) .

我试过用powershell过滤规则,然后推送到.netsh:

$rulesToRemove = Get-NetFirewallRule | where {$_.profile -ne "Any"} | select displayName

foreach($rule in $rulesToRemove) { netsh advfirewall firewall delete rule name=$rule }

它对某些规则有效,对其他规则无效——“没有规则符合特定条件”。 我尝试推送 displayName、name 和其他几个值,但大多数规则根本不符合条件。 这里唯一的条件是 fw 规则名称,所以我尝试使用 .netsh 获取名称,例如我得到了这样的东西:

@{Microsoft.Windows.Cortana_1.11.6.17763_neutral_neutral_cw5n1h2txyewy?mc-resource://Microsoft.Windows.Cortana/resources/PackageDisplayName}

甚至这也不适用于 .netsh 作为规则名称:(。

问题:有没有办法在合理的时间内通过脚本删除数万条防火墙规则?

就像 Bill_Stewart 说的,你也可以点引用它。

$rulesToRemove = (Get-NetFirewallRule | where {$_.profile -eq "Any"}).DisplayName
foreach($rule in $rulesToRemove) { netsh advfirewall firewall delete rule name=$rule }

这个脚本将删除其中的大部分; 如果它们具有相似的名称,只需添加其余部分。 这并不花哨,但它有效。 remove-command 搜索进出防火墙列表并删除所有与显示名称匹配的内容。 定期运行它,它不会使用很多资源:

    Write-Host '*** Deleting: '
    remove-netfirewallrule -DisplayName "Your account" 
    remove-netfirewallrule -DisplayName "Work or school account"
    remove-netfirewallrule -DisplayName "cortana"
    remove-netfirewallrule -DisplayName "SmartScreen"
    remove-netfirewallrule -DisplayName "Windows Default Lock Screen"
    remove-netfirewallrule -DisplayName "Windows Shell Experience"
    remove-netfirewallrule -DisplayName "Xbox Game UI"
    remove-netfirewallrule -DisplayName "Email and accounts"

一旦你删除了孤立的规则,就有一个 reg edit 来阻止这种情况的发生。

解决了由于大量 Windows 防火墙规则而降低服务器性能或导致服务器停止响应的问题。 要启用此解决方案,请使用 regedit 修改以下内容并将其设置为 1:

Type: “DeleteUserAppContainersOnLogoff” (DWORD)
Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM