Я пытаюсь использовать PowerShell для экспорта всех заданий из нескольких экземпляров в файлы .txt.
Но когда я получаю задания, которые используют «/» в своих именах, файлы не могут быть созданы из-за ОС ограничения именования.
Следовательно, я хотел бы экспортировать задания и заменить «/» из их имен на «_». Вот запрос, который я использую.
$Loop = Invoke-Sqlcmd -ServerInstance Source -Database DB -Query "SELECT DISTINCT [alias/host] as [SrcServer] FROM [DB].[dbo].[AllDatabases];"
foreach ($JobsExport in $Loop) {
foreach ($i in $JobsExport.SrcServer) {
$SrvFolderName = ($JobsExport.SrcServer) -replace '\\','_'
$dir = "C:\Temp\All_Jobs\"+ $SrvFolderName
#Create the folders
if(!(Test-Path -Path $dir )){
New-Item -ItemType directory -Path $dir
Write-Host "Folder Created"
}
else
{
Write-Host "Folder already exists - skipping"
}
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" ($JobsExport.SrcServer);
$srv.JobServer.jobs|foreach-Object {$_.script() > "C:\Temp\All_Jobs\$SrvFolderName\$SrvFolderName-$_.txt" | % ($SrvFolderName-$_.txt) -replace '\\','_' -Verbose }
}
}