我们正在尝试在“ SQL备份作业”步骤中替换备份位置(通过多台服务器运行Power Shell) 以下是我想使用的PS脚本:
# $Server is a file with SERVERNAME names
$Jobs = Get-SQLAgentJob -ServerInstance
$Servers Foreach ($job in $Jobs.Where{$_.Name -like 'DatabaseBackup' -and $_.isenabled -eq $true}) {
foreach ($Step in $Job.jobsteps.Where{$_.Name -like 'DatabaseBackup'}) {
$Step.Command = $Step.Command.Replace("Directory = N'C:\Backup\oldname1\oldname2\SERVERNAME'", "Directory = N'C:\Backup2\newname1\newname2\SERVERNAME'")
$Step.Alter()
}
}
答案 0 :(得分:0)
看来这应该可行。我看到的唯一潜在问题如下:
命名的SQL实例:如果不使用默认实例名称,则$ servers变量将需要具有servername \ instancename格式
作业和步骤名称:如果您的作业名称和作业步骤名称不完全是数据库备份(不区分大小写),则-like运算符与确切的字符串结合使用将找不到匹配项。如果名称中包含数据库备份字符串,则在字符串的两边使用 -match“ databasebackup” 或-带有星号的类似符号会更安全。
否则,只要没有网络连接或权限问题,此代码就可以正常工作。