1

我在 Windows 7 机器上使用防火墙,我想删除而不是禁用现有规则,我想知道如何做到这一点。要禁用,我正在做:

function Disable-IncomingFirewallRule($ruleName)
{
    $firewall = New-Object -ComObject hnetcfg.fwpolicy2

    try
    {
        $rule = $firewall.Rules.Item($ruleName)
        $rule.Enabled = $false
        Write-Host "Firewal rule disabled"
    }
    catch
    {
       Write-Host -ForegroundColor Red "Rule does not exist"

    }

但是在此之后,规则仍然存在,并且当我运行几次时,我将有许多禁用的规则,这就是我想删除它们的原因。

不幸的是,使用NetSecurity模块的 and 不是一个选项,因为这些仅适用于 Window 8。

我一直在寻找一些东西来向我展示如何做到这一点,但都没有找到。任何帮助将不胜感激。

4

2 回答 2

3

使用netsh

netsh advfirewall firewall delete rule name="$ruleName"
于 2013-07-31T21:51:22.103 回答
1

抱歉,我目前无法对最后一个答案添加评论。

你的问题已经解决了,但是可能还有其他情况的人:

请注意,完整的 advfirewall 命令仅适用于 NT6.0 及更高版本(Vista 及更高版本)。如果您有较旧的客户端,则语法为:

netsh firewall delete allowedprogram "program name"

(那是用来删除程序规则的,其他的我没用过)

于 2013-08-01T17:47:44.470 回答