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

PowerShell中if语句使用变量属性的问题排查

PowerShell脚本if分支异常问题解决

你的问题核心是类型不匹配:$status.Enabled返回的是PowerShell原生的布尔值($true/$false),但你在判断时却和字符串"False"/"True"做比较,两者永远不相等,所以才会每次都执行else分支。

关于你问的「是否可以在if语句中使用Cmdlet返回结果的属性」——完全可以,这是PowerShell的常规用法,问题出在你的比较逻辑上,不是属性调用本身的问题。

修正后的脚本如下:

$filepath = "C:\Scripts\Logs"
$date = Get-Date -Format "dd.MM.yyyy HH:mm:ss"

$tapejob = Get-VBRTapeJob -Name "GFS Backup to Tape"
$tapejob | Disable-VBRJob

$status = Get-VBRTapeJob -Name "GFS Backup to Tape"

# 直接和布尔值$false/$true比较,不要加引号
if (-not $status.Enabled) {
    "$date Der Backup To Tape Job wurde erfolgreich deaktiviert." | Out-File "$filepath\DisableTapeJobLog.txt" -Append
}
else {
    "$date Der Backup To Tape Job wurde nicht erfolgreich deaktiviert." | Out-File "$filepath\DisableTapeJobLog.txt" -Append
}

补充说明:

  • 用-not $status.Enabled比$status.Enabled -eq $false更符合PowerShell的惯用写法
  • 不需要额外的elseif分支,因为布尔值只有两种可能,直接用else覆盖未成功的情况即可
  • 如果想保留原分支结构,把字符串换成原生布尔值$false/$true也可以:
    if ($status.Enabled -eq $false) { ... }
    elseif ($status.Enabled -eq $true) { ... }
    

内容的提问来源于stack exchange,提问作者this_is_cve

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:25:19