当value不为null时,无法索引到null数组错误

时间:2013-10-24 15:57:10

标签: powershell sql-job

我正在使用Poweshell查看特定SQL作业的状态。 我想传递作业名称作为输入,如读取主机或传递变量。 当作业名称是qoutes(脚本1)中的静态字符串时,脚本工作正常。如果我通过变量传递它,它就不起作用。

如果我遍历Jobs中的每个作业并将作业名称与where-object比较与字符串进行比较,那么它可以正常工作。这不是好事,因为我们有100个工作岗位 第二个脚本我收到错误。错误 -

  

无法索引到空数组。在C:\检查状态test.ps1:22 char:31   + $ job = $ server.JobServer.Jobs [<<<< $ job_to_check]
      + CategoryInfo:InvalidOperation:(CDSMaint:String)[],RuntimeException       + FullyQualifiedErrorId:NullArray

任何人都可以指导我如何拥有$ job变量,其中包含名为$ job_to_check的作业对象 任何提示,指导都非常感谢。

脚本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

1 个答案:

答案 0 :(得分:0)

我不确定脚本1的工作原理,但我在脚本2中更改的内容(服务器名称和登录信息旁边)是最后一行的旁边。 来自

$job = $server.JobServer.Jobs[$job_to_check]
$job = $srv.JobServer.Jobs[$job_to_check]