You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中if语句判断TcpTestSucceeded值时逻辑错误问题咨询

问题原因

Test-NetConnection返回的TcpTestSucceeded属性是布尔类型,而非字符串类型。你在判断时用-eq 'False'将布尔值与字符串做比较,PowerShell执行比较运算时会自动将右侧的操作数转换为和左侧一致的类型:非空字符串转换为布尔值时统一返回$true,因此你的判断条件实际等价于if($test_result.TcpTestSucceeded -eq $true),刚好和你预期的判断逻辑完全相反,所以才会出现返回$true时命中if分支输出a的问题。

修复方案
  • 方案1:直接和布尔常量$false做比较,不要加引号
if($test_result.TcpTestSucceeded -eq $false )
{
    Write-Output 'a'
}
else
{
    Write-Output 'b'
}
  • 方案2:使用PowerShell原生的取反语法,写法更简洁
if(-not $test_result.TcpTestSucceeded)
{
    Write-Output 'a'
}
else
{
    Write-Output 'b'
}

内容的提问来源于stack exchange,提问作者Radek Gąska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:09:03