编写脚本以避免布尔错误的更好方法

时间:2016-09-13 09:49:39

标签: powershell

我编写了一个脚本,作为脚本的一部分,我正在检查作业是否正在运行,如果是,则强制它停止:

$copyjob = Get-Job -Name DBACopy_QFR1-DBA20_2_QFR3-DBS21_S_Drv_DBA -ErrorAction SilentlyContinue
if ($copyjob)
{
    remove-job $copyjob -force   # This job my be causing problems with the backups so we kill it to make sure.
}

但是,我认为我编写的是脚本运行时出现此错误的原因:

  

无法将值“System.Management.Automation.PSRemotingJob”转换为“System.Boolean”类型。布尔参数仅接受布尔值和数字,例如$ True,$ False,1或0

是否有更好的方法可以避免错误,或者我认为这就是产生错误的错误。

2 个答案:

答案 0 :(得分:1)

而不是

if ($copyjob)
{
}

尝试使用

if ($copyjob -ne $null)
{
}

答案 1 :(得分:0)

如果这是您的所有代码,您可以简化:

Remove-Job -Name DBACopy_QFR1-DBA20_2_QFR3-DBS21_S_Drv_DBA -ErrorAction SilentlyContinue

代码减少,失败的可能性减少。你也可以管道:

Get-Job -Name "SomeName" -ErrorAction SilentlyContinue | remove-job -force