Poweshell を使用して、特定の SQL ジョブのステータスを表示しています。read-host のような入力としてジョブ名を渡したり、変数を渡したりしたい。ジョブ名が qoutes(Script 1) の静的文字列の場合、スクリプトは正常に機能します。変数を介して渡す場合、機能しません。
Jobs の各ジョブをループし、ジョブ名を where-object 比較で文字列と比較すると、正常に動作します。2 番目のスクリプトで何百ものジョブがあるため、エラーが発生するため、これは良い方法ではありません。エラー-
null 配列にインデックス付けできません。At C:\Check status test.ps1:22 char:31 + $job = $server.JobServer.Jobs[ <<<< $job_to_check]
+ CategoryInfo : InvalidOperation: (CDSMaint:String) [], 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
スクリプト 2:
$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