我希望连接并循环遍历数百个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
提前致谢 达伦
答案 0 :(得分:2)
使用SMO
$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()