.net 在Windows 7上使用Powershell删除防火墙规则

.net 在Windows 7上使用Powershell删除防火墙规则,.net,powershell,.net,Powershell,我正在Windows7上使用防火墙,我想删除而不是禁用现有的规则,我想知道如何做到这一点。要禁用,我正在执行以下操作: function Disable-IncomingFirewallRule($ruleName) { $firewall = New-Object -ComObject hnetcfg.fwpolicy2 try { $rule = $firewall.Rules.Item($ruleName) $rule.Enable

我正在Windows7上使用防火墙,我想删除而不是禁用现有的规则,我想知道如何做到这一点。要禁用,我正在执行以下操作:

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不是一个选项,因为它们只在windows8上工作


我到处寻找一些东西来告诉我如何做到这一点,但都没有找到。任何帮助都将不胜感激

使用
netsh

netsh advfirewall firewall delete rule name="$ruleName"

使用
netsh

netsh advfirewall firewall delete rule name="$ruleName"

对不起,我现在无法对最后一个答案添加评论

您的问题已解决,但可能有人患有其他疾病:

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

netsh firewall delete allowedprogram "program name"

(这是为了删除程序规则,我没有以其他方式使用它)

对不起,我现在无法在最后一个答案中添加注释

您的问题已解决,但可能有人患有其他疾病:

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

netsh firewall delete allowedprogram "program name"

(这是用来删除程序规则的,我没有以其他方式使用过)

谢谢。我没有意识到
netsh
在Windows7上工作。我以为它只能在Windows8上运行。伟大的回答顺便说一句!简单、正确、高效。谢谢。我没有意识到
netsh
在Windows7上工作。我以为它只能在Windows8上运行。伟大的回答顺便说一句!简单、正确、高效。