gpt4 book ai didi

powershell - 如何阻止 Powershell 命令 `Get-NetFirewallRule` 抛出错误?

转载 作者:行者123 更新时间:2023-12-03 09:32:46 25 4
gpt4 key购买 nike

我正在尝试使用 Powershell 确定防火墙规则是否存在。

如果规则不存在,我会收到一条难看的错误消息。如果它确实存在,一切都很好:)

如何在不出现任何难看的红色错误消息的情况下检查规则是否存在?

例如。

Import-Module NetSecurity

# Check if the firewall rule exists.
$existingRule = Get-NetFirewallRule -DisplayName $name

错误信息(当规则不存在时)...
Get-NetFirewallRule : No MSFT_NetFirewallRule objects found with property 'DisplayName' equal to 'Blah Blah Port 44444'.  Verify the value of the property and retry. At C:\projects\xwing\Setup.ps1:67 char:21
+ $existingRule = Get-NetFirewallRule -DisplayName $name
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Blah Blah Port 44444:String) [Get-NetFirewallRule], CimJobException
+ FullyQualifiedErrorId : CmdletizationQuery_NotFound_DisplayName,Get-NetFirewallRule

请问有人知道如何安全地检查规则吗?

最佳答案

填充 -ErrorAction cmdlet 的参数
Get-NetFirewallRule -DisplayName $name -ErrorAction SilentlyContinue
此时您可以使用 $? 测试最后一条命令的结果。 .如果规则存在,这将返回 $true .

或者,您可以使用 try/catch 块:

try {
Get-NetFirewallRule -DisplayName blah -ErrorAction Stop
Write-Host "Rule found"
}
catch [Exception] {
write-host $_.Exception.message
}

关于powershell - 如何阻止 Powershell 命令 `Get-NetFirewallRule` 抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27356095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com