判断是否存在某个名称的防火墙规则

问题描述 投票:0回答:1

简单的问题,如果存在名为“rule X”的防火墙规则,如何编写 if else 表达式?我找到了十几个不同的例子,但它们要么不起作用,要么太深奥。

$r = Get-NetFirewallRule -DisplayName 'Docker Cluster Management Communications' 2> $null; 
if ($r) { 
    write-host "found it"; 
} 
else { 
    write-host "did not find it" 
}
if((netsh advfirewall firewall show rule name="** TCP Port 1433") -Contains "No rules match the specified criteria.")

{
  netsh advfirewall firewall add rule name="** TCP Port 1433" dir=in protocol=TCP localport=1433 action=allow
}
if (Get-NetFirewallRule -DisplayName 'Rule X' ) {
write-host "Firewall rule for Rule X  already exists, not creating new rule"
}
powershell firewall
1个回答
1
投票

我理解你的疑惑和困惑,有时候尽可能简化代码是有必要的。

我已经找到了做你想做的事情的方法,在我看来,使用以下代码非常简单:

$RuleExists = Get-NetFirewallRule | Where-Object DisplayName -eq "Docker Desktop Backend"

if ($RuleExists) {
    Write-Host "Found it"
}
else {
    Write-Host "Did not find it"
}

这只是一个示例,根据您的情况,您需要更改正在检查的 DisplayName。

问候!

© www.soinside.com 2019 - 2024. All rights reserved.