Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在powershell中删除和应用防火墙规则的速度非常慢_Powershell_Windows Firewall - Fatal编程技术网

在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