Comments 3
В продолжение темы сущая мелочь — у нас еще применяется абстракция имен серверов, реальные имена скрыты за DNS-алиасами, чтобы в случае замены сервера не переписывать кучу скриптов. Выяснилось, что попытка удаленного запуска powershell по такому алиасу вызывает ошибку Kerberos, поэтому задание агента SQL пришлось дополнить кодом для вычисления реального имени компьютера. Так как длина строки в CMDEXEC не резиновая, и пришлось бороться за длину этого кода, привожу его здесь:
PowerShell -NonInteractive -NoProfile "$CN='backup02.technical'; $P=(Resolve-DnsName -DnsOnly -Name $CN -Type PTR -ErrorAction SilentlyContinue); If ($P -ne $NULL){$CN=$P[-1].NameHost}; $res=Invoke-Command -ComputerName $CN -ConfigurationName SQLAgent -ScriptBlock {&'C:\sqlagent\TestOutput1.ps1' 0}; Exit $res"
PowerShell -NonInteractive -NoProfile "$CN='backup02.technical'; $P=(Resolve-DnsName -DnsOnly -Name $CN -Type PTR -ErrorAction SilentlyContinue); If ($P -ne $NULL){$CN=$P[-1].NameHost}; $res=Invoke-Command -ComputerName $CN -ConfigurationName SQLAgent -ScriptBlock {&'C:\sqlagent\TestOutput1.ps1' 0}; Exit $res"
Sign up to leave a comment.
Возврат значения из powershell invoke-command агенту SQL-Server