【问题标题】:PowerShell code to script out all SQL Server Agent jobs into a single file将所有 SQL Server 代理作业脚本化到单个文件中的 PowerShell 代码
【发布时间】:2021-05-18 20:59:17
【问题描述】:

我试图将“数据仓库”类别的所有 SQL Server 代理作业编写成脚本写入单个文件

我可以使用 PowerShell 来做到这一点,其中每个作业都会创建一个文件。

但是对于 ID = 100(或 Category : = 'Data Warehouse')类别下的所有 SQL Server 代理作业,我需要一个文件

我目前正在使用的代码:

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null
$serverInstance = "APAAUHC7DB01VD"

$server = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $serverInstance

$jobs = $server.JobServer.Jobs 
#$jobs = $server.JobServer.Jobs | where-object {$_.category -eq "100"}

if ($jobs -ne $null)
{

$serverInstance = $serverInstance.Replace("\", "-")

ForEach ( $job in $jobs )
{
$FileName = "C:\SQLBackup\SQLJobs\" + $serverInstance + "_" + $job.Name + ".sql"
$job.Script() | Out-File -filepath $FileName
}
}

【问题讨论】:

标签: sql sql-server powershell sql-agent-job


【解决方案1】:

给$FileName 一个单一的文件名用于整个集合。然后你可以省略整个 foreach 块:

$FileName = "C:\SQLBackup\SQLJobs\whatever.sql"

$jobs | %{ $_.Script() } | Out-File -filepath $FileName

【讨论】:

  • 嗨 [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null $serverInstance = "APAAUHC7DB01VD" $server = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $serverInstance $jobs = $server.JobServer.Jobs #$jobs = $server.JobServer.Jobs | where-object {$_.category -eq "100"} if ($jobs -ne $null) { $serverInstance = $serverInstance.Replace("\", "-") ForEach ($job in $jobs) { $文件名 = "C:\SQLBackup\SQLJobs\" + $serverInstance + ".sql" $jobs | { $_.Script() } | Join-String -Separator "rn`t" | Out-File -filepath $FileName } }
  • 我更改了如下代码:但是我收到以下错误:作业步骤在 PowerShell 脚本的第 17 行收到错误。对应的行是'$jobs | { $_.Script() } |连接字符串-分隔符 "rnt" | Out-File -filepath $FileName '. Correct the script and reschedule the job. The error information returned by PowerShell is: 'At line:17 char:9 + $jobs | { $_.Script() } | Join-String -Separator "rnt" | Out-File ... + ~~~~~~~~~~~~~~~ 表达式只允许作为管道的第一个元素。 '。处理退出代码-1。步骤失败。我对 PowerShell 真的很不好
  • 完全忽略 foreach。已编辑,请重试。
猜你喜欢
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
相关资源
最近更新 更多