Фоновая работа не запускается - PullRequest
2 голосов
/ 24 декабря 2010

У меня есть функция в скрипте powershell 2.0, которую я запускаю как задание bkground

Start-Job -ScriptBlock {CopyDataToServer($uploadSessionGuid)} -Name $uploadSessionGuid

Тогда в конце скрипта у меня есть

Wait-Job -State Running -Timeout $LogCopyTimeout

Событие, хотя задание отображается как Выполнено и затем завершено, на сервер ничего не копируется.

Как мне отладить это?

Ответы [ 2 ]

4 голосов
/ 24 декабря 2010

Роман прав насчет CopyDataToServer, и, вероятно, $ uploadSessionGuid не определен в пространстве выполнения, в котором выполняется задание (поднял голос) Кстати, я считаю, что лучше ждать конкретного объекта задания, чем любой работы в состоянии выполнения, например ::10000

$job = Start-Job {param($path, $guid) . $path\lib.ps1; CopyDataToServer $guid} `
       -arg $pwd,$uploadSessionGuid
Wait-Job $job
Receive-Job $job

Обратите внимание, что вы можете использовать параметр -ArgumentList для передачи параметров в ваш скрипт-блок. Хотя вы можете получить доступ к этим аргументам в вашем блоке скриптов через $args, я предпочитаю использовать блок param и присваивать имена аргументам. В этом примере также показано, как можно передать путь к сценарию PowerShell, содержащему функцию CopyDataToServer, которая получает точку в пространстве выполнения задания.

4 голосов
/ 24 декабря 2010

Блок сценария {CopyDataToServer($uploadSessionGuid)} вызывается в новом пространстве выполнения, где команда CopyDataToServer или переменная $uploadSessionGuid могут быть недоступны.Чтобы проверить это вместо задания, сначала запустите:

Start-Job -ScriptBlock {
    Get-Command CopyDataToServer
    Get-Variable uploadSessionGuid
}

Wait-Job -State Running
Get-Job | Receive-Job

Если задание возвращает команду и переменную, проблема в другом месте и отладка не закончена.Но если это не удастся или получит неправильные результаты, то эту проблему необходимо решить (чтобы сделать команду доступной и / или использовать другой способ для предоставления параметра).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...