简单的问题,如果存在名为“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"
}
我理解你的疑惑和困惑,有时候尽可能简化代码是有必要的。
我已经找到了做你想做的事情的方法,在我看来,使用以下代码非常简单:
$RuleExists = Get-NetFirewallRule | Where-Object DisplayName -eq "Docker Desktop Backend"
if ($RuleExists) {
Write-Host "Found it"
}
else {
Write-Host "Did not find it"
}
这只是一个示例,根据您的情况,您需要更改正在检查的 DisplayName。
问候!