如何使用PowerShell编辑SQL作业步骤

时间:2015-11-24 14:49:58

标签: sql sql-server powershell

我希望连接并循环遍历数百个SQL服务器/实例,查找特定作业,使用特定作业步骤,并希望修改该作业步骤中的命令以将1更改为0 - 我希望使用PowerShell执行此操作。

我有一个PS脚本来启用或禁用整个作业,但我不想禁用作业甚至是作业步骤。我想改变步骤内的语法, 例如。从@ ENABLED = 1到@ ENABLED = 0

我需要通过具有特定SQL权限的IP地址(例如sa帐户)来定位这些SQL服务器,因为服务器不在域中(具有NAT&#IP;的vCloud Director内的VM)

SQL Server 2014 w \ SP1 PowerShell v5 Windows Server 2012 R2& 2008 R2

提前致谢 达伦

1 个答案:

答案 0 :(得分:2)

使用SMO

  1. 定义新的作业步骤SQL。您可以在倒数第二行之前的任何地方执行此操作。
  2. 加载SMO组件。
  3. 创建服务器对象
  4. 假设您要查找的作业名称和步骤名称是testJob3和secondStep,此行显示当前命令文本。这不是你想要做的事情。
  5. 更改作业步骤命令文本
  6. 承诺改变。
  7. $newCmd = "DECLARE @ENABLED`nSET @ENABLED = 0`n-- This is the end"
    add-type -AssemblyName "Microsoft.SqlServer.Smo, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
    $srvObj = new-object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList $connectToThisServer
    $srvObj.JobServer.Jobs['testJob3'].JobSteps['secondStep'].Command
    $srvObj.JobServer.Jobs['testJob3'].JobSteps['secondStep'].Command = $newCmd
    $srvObj.JobServer.Jobs['testJob3'].JobSteps['secondStep'].Alter()