【发布时间】:2018-10-15 13:03:02
【问题描述】:
我有一个提供 SQL 代理作业信息的 powershell 脚本。该脚本旨在监视作业并告诉我它们上次运行时是否失败。不过我也想知道这是最后一个运行步骤。我似乎无法弄清楚如何。
我正在查询 Sql 服务器管理对象,因为它需要在多个远程服务器(远程连接)上可用,并且我希望避免运行 SQL 脚本。
请记住,我对 powershell 还比较陌生。
这是目前为止的代码:我已经加载了 SMO 库,只是没有显示复制的脚本。
## Get Jobstep Class SMO
Push-Location; Import-Module SQLPS -DisableNameChecking; Pop-Location;
$JobStep = New-Object microsoft.sqlserver.management.smo.agent.jobstep
## Run the select from the local SQL server management objects
$SQLSvr = "."
$MySQLObject = new-object Microsoft.SqlServer.Management.Smo.Server `
$SQLSvr;;
$Select = ($MySQLObject.JobServer.jobs) `
| Select Name, isEnabled, `
lastRunDate, lastRunOutCome, NextRunDate `
| Where-Object {$_.LastRunDate -ge ((Get-Date).adddays(-2)) } `
| ft -AutoSize;
$Select
推送位置部分旨在获取正确的 smo 类以选择作业步骤(不确定是否正确),但我没有从中添加任何内容。
现在脚本可以正常工作,我没有收到任何错误,并且返回了我想要的整体信息,但我无法弄清楚如何添加作业步骤 - 我已经咨询了谷歌。我很清楚我需要在选择中添加更多内容,但对我来说有什么问题。 那么,我如何使用 SMO 从 SQL 代理作业中提取最后一个运行作业步骤,并将其添加到上述脚本中?
【问题讨论】:
标签: powershell smo