这就是我想要做的。
我遇到的问题是,如果查询发生错误,则该变量保持为空,然后将运行Windows更新。
我正在寻找有关如何正确运行此检查的想法,并且仅在变量为null时才运行Windows更新。
$result = Invoke-Sqlcmd -ServerInstance 'ipaddress,port' -Database 'instance' -Query $testQuery -QueryTimeout 15
if (!$result)
{
Get-WUInstall -WindowsUpdate Software -AcceptAll
}
答案 0 :(得分:1)
如果分配$result
会给您带来错误,那么我将像这样跟踪$error
变量:
$error.clear()
$result = Invoke-Sqlcmd -ServerInstance 'ipaddress,port' -Database 'instance' -Query $testQuery -QueryTimeout 15
if (!$result -and !$error)
{
Get-WUInstall -WindowsUpdate Software -AcceptAll
}
测试案例:没有错误,也没有结果
$error.clear()
$result = $null
if (!$result -and !$error) {
Write-Host "Updating Windows..."
}
Updating Windows...
测试案例:结果错误
$error.clear()
$result = Invoke-Sqlcmd -ServerInstance 'ipaddress,port' -Database 'instance' -Query $testQuery -QueryTimeout 15
Invoke-Sqlcmd : The term 'Invoke-Sqlcmd' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
if (!$result -and !$error) {
Write-Host "Updating Windows...."
}
[bool]$error
True
[bool]$result
False
$error.clear()
仅清空$error
变量。如果您希望该变量在整个脚本中跟踪错误,则这可能并不完全明智。我只能假设,因为我只看到了您正在做什么的摘要。