【发布时间】:2013-10-24 15:57:09
【问题描述】:
我正在使用 Poweshell 查看特定 SQL 作业的状态。 我想将作业名称作为输入传递,例如读取主机或传递变量。 当作业名称是 qoutes(Script 1) 中的静态字符串时,该脚本工作正常。如果我通过变量传递它,它就不起作用。
如果我遍历 Jobs 中的每个作业并将作业名称与 where-object 比较字符串进行比较,它工作正常。这不是好方法,因为我们有 100 多个工作岗位 使用第二个脚本我收到错误。错误-
无法索引到空数组。在 C:\检查状态 test.ps1:22 char:31 + $job = $server.JobServer.Jobs[ + 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
脚本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
【问题讨论】:
-
错误告诉你 $server.JobServer.Jobs 是一个空数组,但是从你发布的内容中无法判断它为什么可能是空的。没有其他对 $server 的引用。
标签: powershell sql-job