Можете ли вы передать объект SQL Server через PowerShell? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть скрипт, который подключается к экземпляру сервера и получает задания агента SQL для этого сервера. Я пытаюсь передать объект SQL из одной функции в другую, но продолжаю получать ошибки. В этом случае я запускаю интеграционный тест, который передает объект SQL через командную строку PowerShell в мой производственный скрипт.

Я пытался передать только имя сервера, но оно все равно не работает.

Сценарий интеграции:

    $inst =  "Server01"
    $svr = new-object ('Microsoft.SqlServer.Management.Smo.Server') $inst
    Write-Host ($svr | Format-Table | Out-String)   
    #Call Start stop script to add in the starts and stops
    powershell -command ". .\AddStart.ps1; Start-Step -svr $svr -jobName ""Test_AddStartStop_Integration"""

Рабочий сценарий:

function Start-Step($svr, $jobName)
{  
  $job = new-object ('Microsoft.SqlServer.Management.Smo.Agent.Job') 
 ($svr.JobServer, $jobName)
  Write-Host ($svr | Format-Table | Out-String)
}

Всякий раз, когда я выводю объект $ svr в интеграционном тесте, я получаю всю информацию о соединении. В Write-Host в Start.ps1 он просто возвращает мне информацию об ошибках аудита. Со следующей ошибкой

powershell : new-object : Exception calling ".ctor" with "2" argument(s): "SetParent failed for Job

1 Ответ

1 голос
/ 08 октября 2019

Нельзя передавать объекты новому экземпляру powershell. Вместо «dot include» скрипт, содержащий функции, и вызовите их напрямую. EG:

. "$PSScriptRoot\Production.ps1"
$inst =  "localhost"
$svr = new-object ('Microsoft.SqlServer.Management.Smo.Server') $inst
Write-Host ($svr | Format-Table | Out-String)   
#Call Start stop script to add in the starts and stops
Start-Step -svr $svr -jobName "Test_AddStartStop_Integration"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...