我正在使用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
模块不是一个选项,因为它们仅适用于Window 8。
我有搜索高低的东西,告诉我如何做到这一点,但已经很短。任何帮助将不胜感激。
答案 0 :(得分:2)
使用netsh
:
netsh advfirewall firewall delete rule name="$ruleName"
答案 1 :(得分:1)
抱歉,我暂时无法在最后一个答案中添加评论。
您的问题已解决,但可能有其他条件的人:
请注意,完整的advfirewall命令仅适用于NT6.0及更高版本(Vista及更高版本)。 如果您有较旧的客户端,则语法为:
netsh firewall delete allowedprogram "program name"
(那是为了删除程序规则,我没有以其他方式使用它)