SQL Server Agent与PowerShell的高效协作及管理
1. 确保PowerShell失败时Agent作业失败
在使用CmdExec作业步骤运行SQL Server Agent作业时,我们期望当PowerShell返回错误时,Agent作业也能相应失败。但默认情况下,作业步骤不会返回能让SQL Server Agent识别为失败的退出代码。例如,表面上Agent作业可能显示为成功(有绿色对勾),但仔细查看会发现PowerShell脚本实际上失败了。
常见的错误信息如“Copy - DbaLogin未被识别为cmdlet、函数、脚本文件或可执行程序”,这通常是因为无法导入dbatools模块。若遇到此错误,需确保dbatools对用户可用。
为解决此问题,可按以下步骤操作:
1. 添加 - EnableException参数 :成功导入dbatools后,添加 - EnableException参数可使作业按预期失败。可在脚本顶部设置一次该参数的值,将其限制为所有包含 - Dba的dbatools命令:
PS> $PSDefaultParameterValues['*-Dba*:EnableException'] = $true
- 使用try/catch块 :为确保所有PowerShell命令传递正确的退出代码,需将它们放在try/catch块中。示例代码如下:
超级会员免费看
订阅专栏 解锁全文

38

被折叠的 条评论
为什么被折叠?



