Как отладить фоновое задание PowerShell? - PullRequest
1 голос
/ 04 марта 2011

Джейсон Арчер помог мне решить мою последнюю проблему , но при тестировании его решения я наткнулся на реальную проблему. Мой сервер не будет правильно запускать цепочки фоновых заданий, но мои ноутбуки будут работать.

Если я запускаю сценарии из предыдущей задачи на своих ноутбуках, они работают отлично. Сценарий A запускает сценарий B в качестве фонового задания, а сценарий B вызывает сценарий C из этого задания, и все выходные данные принимаются. Если я запускаю точно такие же сценарии на моем сервере, сценарий A вызывает сценарий B, а сценарий B зависает на неопределенное время. Если я запускаю скрипт B напрямую, он отлично работает на сервере или ноутбуках. Это что-то в моей работе, которая убивает меня.

$ PSVersionTable возвращает одинаковые результаты на всех компьютерах, хотя очевидно, что мне приходилось использовать разные установщики на WinXP против Win2003R2.

Что может быть причиной различий в поведении?

Есть ли способ выяснить, что происходит в фоновых заданиях? Если бы я мог видеть принимаемые командные строки (я записывал то, что отправляется, но иногда вещи дрейфуют), или какой объект действительно зависает, возможно, это помогло бы, но отладчик меня туда не доставит. Возможно есть способ назвать работу в пределах ISE, как будто это выполнялось в фоновом режиме?

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Ах. Я думаю, может быть, у меня есть ответ.

Ноутбук

PS Z:\jobs> winrm quickconfig
WinRM already is set up to receive requests on this machine.
WinRM already is set up for remote management on this machine.

Сервер:

PS D:\jobs> winrm quickconfig
WinRM already is set up to receive requests on this machine.
WinRM is not set up to allow remote access to this machine for management.
The following changes must be made:

Create a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine.

Если кто-то может подтвердить это или дать информацию об устранении неполадок фоновых заданий, я отмечу ответ на вопрос.

0 голосов
/ 05 мая 2011

Вы можете получить выходной результат задания Powershell, используя Получить задание . Например, если бы у нас была такая работа:

$myJob = start-job -ScriptBlock  { 
    Write-Output "Some stuff happening..."
    throw "Hello World!"
}

Мы могли бы получить результат работы следующим образом:

Receive-Job $myJob    #prints the message and exception
...