在powershell中删除和应用防火墙规则的速度非常慢
我有几个脚本包含在powershell中删除和应用防火墙规则的速度非常慢,powershell,windows-firewall,Powershell,Windows Firewall,我有几个脚本包含newnetfirewallrulecommandlets,总共大约有200条规则,删除现有规则然后应用新规则大约需要15分钟 根据文档New NetFirewallRulecmdlet具有GPOSession参数,该参数允许您指定GPO对象,使用Open NetGPO加载GPO,您进行修改,然后将GPO保存回 然而,这是一个无用的参数,因为它看起来只适用于域,我在Windows10单计算机网络上,没有域 显然,每个新NetFirewallRulecmdlet都是针对localh
newnetfirewallrule
commandlets,总共大约有200条规则,删除现有规则然后应用新规则大约需要15分钟
根据文档New NetFirewallRule
cmdlet具有GPOSession
参数,该参数允许您指定GPO对象,使用Open NetGPO
加载GPO,您进行修改,然后将GPO保存回
然而,这是一个无用的参数,因为它看起来只适用于域,我在Windows10单计算机网络上,没有域
显然,每个新NetFirewallRule
cmdlet都是针对localhost GPO单独调用的,这太慢了。是否有办法加载本地组策略,执行所需操作,然后在不访问每个防火墙规则的GPO的情况下应用更改
编辑:
对于评论的回应,我认为所有的规则都很简单,即不处理重量级电话,比如:(有200多条这样的规则)
很多变量都是预定义的,但只有少数变量使用更复杂的调用,但在脚本初始化过程中这种情况只发生一次
例如,要确定环回接口别名:
$Loopback = Get-NetIPInterface | Where-Object {$_.InterfaceAlias -like "*Loopback*" -and $_.AddressFamily -eq "IPv4"} | Select-Object -ExpandProperty InterfaceAlias
要删除规则,我使用此命令删除一组规则:
Remove-NetFirewallRule -PolicyStore $PolicyStore -Group $Group -Direction $Direction -ErrorAction SilentlyContinue
您可以使用本地安全策略工具(secpol.msc
)进行配置并将其导出到.inf
文件。然后在目标计算机上使用相同的工具导入.inf
或secedit.exe
进行脚本编写:(如果导出的文件是mypolicy.inf
)
您可以使用本地安全策略工具(secpol.msc
)进行配置并将其导出到.inf
文件。然后在目标计算机上使用相同的工具导入.inf
或secedit.exe
进行脚本编写:(如果导出的文件是mypolicy.inf
)
你能举一些你尝试过的例子吗?很抱歉,我什么都没试过,因为家用电脑没有可用的选项。我的意思是,你尝试添加和删除防火墙规则的powershell命令有哪些示例需要很长时间?我的意思是,在每个规则中使用where对象而不是get netfirewall*filter命令会慢得多。好的,我明白你的意思,我已经更新了我的问题,但是在启动过程中初始化的几个调用不太可能会出现问题?你能举个例子说明你尝试了什么吗?对不起,我没有尝试任何东西,因为家用电脑没有可用的选项。我的意思是,你尝试添加和删除防火墙规则的powershell命令有哪些示例需要很长时间?我的意思是,在每个规则中使用where对象而不是get-netfirewall*filter命令会慢得多。好的,我明白你的意思了,我更新了我的问题,但在启动过程中启动的几个电话不太可能出现问题?这对我来说是新的,我希望得到一些简单的,谢谢你的解决方案。这对我来说是新的,我希望得到一些简单的,谢谢你的解决方案。
Remove-NetFirewallRule -PolicyStore $PolicyStore -Group $Group -Direction $Direction -ErrorAction SilentlyContinue
secedit /configure /db %windir%\security\local.sdb /cfg mypolicy.inf