Uma vez que você perceba que o SSMS está usando o SMO (Server Management Objects) para fazer o script, e que você pode usar o SMO diretamente através de algo como o powershell, esse tipo de coisa fica fácil. Por exemplo, aqui está o script de todos os trabalhos no seu servidor (escrito em powershell):
pushd;
import-module sqlps -disablenamechecking;
popd;
$s = new-object microsoft.sqlserver.management.smo.server 'yourServer';
$db = $s.Databases['yourDatabase'];
foreach ($proc in $db.StoredProcedures | where {$_.IsSystemObject -eq $false}) {
$proc.script();
}
$a = $s.JobServer;
foreach ($job in $a.Jobs) {
$job.script();
}
Esta é a versão menos sofisticada, pois a envia diretamente para a tela. Quer mais chique? Crie um objeto ScriptingOptions e passe-o para o script()
método. Isso deve te ajudar a começar.