我正在使用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