如何附加 netsh 防火墙规则,而不仅仅是替换

Zom*_*ian 5 networking firewall powershell ip netsh

我正在使用脚本在 netsh 中设置防火墙规则。

netsh.exe advfirewall firewall set rule name="Block External IP's" new remoteip="$($ipArray[0])"
Run Code Online (Sandbox Code Playgroud)

我认为使用该集合是为了附加规则而不是替换它。但是,它覆盖了列表中的前一个 ip,并将其替换为数组中的最后一个 ip。我怎样才能重写它以便它添加到规则而不是替换它们?非常感谢您的时间和帮助。

Tex*_*Hex 6

我不确定,但我猜您使用 PowerShell 循环遍历阵列,$IPArray并希望将此阵列中的每个 IP 添加为防火墙规则Block External IP’s远程 IP

如果这是正确的,问题是netsh没有添加 IP 的选项,任何set remoteip=命令都会覆盖以前的条目。因此,您在循环的每次迭代中都会覆盖远程 IP。

我认为解决方案很简单:像以前一样循环遍历数组,但将所有条目组合$IPArray成一个字符串,以,. 字符串应该如下所示192.168.1.1,52.3.7.8

最后,发出一个 netsh命令并将此字符串指定为远程 IP 参数,如下所示(假设您将变量命名为RemoteIPString

netsh.exe advfirewall firewall set rule name="Block External IP's" new remoteip="$RemoteIPString"
Run Code Online (Sandbox Code Playgroud)

  • 唯一的问题是我试图禁止 6000 个 IP(TorNetwork)并达到命令行字符限制。所以唯一的选择是弄清楚如何附加到现有规则。 (3认同)