我正在使用Poweshell查看特定SQL作業的狀態。 我想通過作業名稱作爲輸入,如讀主機或通過變量。 當腳本中的作業名稱是靜態字符串時(腳本1),該腳本正常工作。如果我通過變量傳遞它,它不起作用。當值不爲空時,不能索引爲空數組錯誤
如果我遍歷作業中的每個作業,並比較作業名稱與where-object與字符串的比較,則它可以正常工作。這不是好的方法,因爲我們有100秒的作業 與第二個腳本我收到錯誤。錯誤-
無法索引到空數組中。在C:\檢查狀態test.ps1:22字符:31 + $作業= $ server.JobServer.Jobs [< < < < $ job_to_check]
+ CategoryInfo:InvalidOperation:(CDSMaint:字符串)[],的RuntimeException + FullyQualifiedErrorId:NullArray
任何人都可以指導我怎麼能有一個包含與名稱$ job_to_check 任何暗示的工作對象$ job變量,指導高度讚賞。
腳本1:
$sqlserver="server1"
#$job_to_check='Job1'
$script:username='user1'
$script:pass_word='password'
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $sqlserver;
$srv.ConnectionContext.LoginSecure=$false
$srv.ConnectionContext.set_login($username)
$srv.ConnectionContext.set_password($pass_word)
if ($job_to_check -eq $null)
{
Write-Host "Job is null"
}
$job = $server.JobServer.Jobs["Job1"]
echo $job.Name
SCRIPT2:
$sqlserver="server1"
$job_to_check='Job1'
$script:username='user1'
$script:pass_word='password'
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $sqlserver;
$srv.ConnectionContext.LoginSecure=$false
$srv.ConnectionContext.set_login($username)
$srv.ConnectionContext.set_password($pass_word)
if ($job_to_check -eq $null)
{
Write-Host "Job is null"
}
$job = $server.JobServer.Jobs[$job_to_check]
echo $job.Name
錯誤是告訴你,$ server.JobServer.Jobs是一個空數組,但它不可能從你貼什麼爲什麼它可能是空出來。沒有其他的參考$服務器。 – mjolinor