2011-03-04 3 views
1

제이슨 아처 (Jason Archer)는 my last issue을 해결하는 데 도움을 주었지만 그의 솔루션을 테스트하면서 나는 진짜 문제를 발견했습니다. 내 서버는 연결된 백그라운드 작업을 올바르게 실행하지 않지만 내 랩톱은 올바르게 실행됩니다.PowerShell 백그라운드 작업을 어떻게 디버깅합니까?

내 랩톱에서 이전 문제의 스크립트를 실행하면 완벽하게 작동합니다. 스크립트 A는 스크립트 B를 백그라운드 작업으로 시작하고 스크립트 B는 해당 작업 내에서 스크립트 C를 호출하고 모든 출력을받습니다. 내 서버에서 똑같은 스크립트를 실행하면 A 스크립트는 B 스크립트를 호출하고 B 스크립트는 무기한 정지됩니다. 스크립트 B를 직접 실행하면 서버 또는 랩톱에서 완벽하게 실행됩니다. 그것은 저를 죽이는 배경이 된 일에 관한 것입니다.

$ PSVersionTable은 WinXP와 Win2003R2에서 다른 설치 프로그램을 사용해야했지만 분명히 모든 컴퓨터에서 동일한 결과를 반환합니다.

동작의 차이는 무엇입니까?

백그라운드 작업에서 발생하는 문제를 해결할 수있는 방법이 있습니까? 커맨드 라인이 수신되는 것을 볼 수 있다면 (나는 보내지는 것을 기록했지만, 때로는 일들이 드리프트 됨), 어떤 물건이 물건을 걸고 있는지, 어쩌면 도움이 될지도 모르지만, 디버거는 거기서 나를 데려 가지 않을 것이다. 아마도 백그라운드에서 실행중인 것처럼 ISE 내에서 작업을 호출 할 수있는 방법이 있을까요?

답변

1

아. 아마 내 대답이있을 것 같아.

노트북 :

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

:

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

우리는이 같은 작업의 출력을 얻을 수있다 내 서버,하지만 전경 프로세스로 시작할 수 시작 프로세스와 함께 갈 수 있습니다. 그게 효과가 있어요. – codepoke

0

수신 작업을 사용하여 Powershell 작업의 결과를 가져올 수 있습니다. 우리는 일이 있다면 예를 들어, 다음과 같은 : 나는 모든에 원격 있도록하는 것입니다 내 문제에 대한 해결책을 의심

Receive-Job $myJob #prints the message and exception 
+0

내 원래의 질문에, 나는 원격 작업이 가능한 컴퓨터에서 실행할 때 내 작업을받는 데 문제가 없습니다. 이것은 혼란의 지점이 아닙니다. 문제가 WMI 또는 원격인지 여부를 알아 내려고 노력 중입니다. 그 중 하나를 나타낼 수있는 대답을 들었지만 모든 서버에서 원격을 사용하도록 설정 한 것에 가깝습니다. 그것은 행복한 날이 될 것입니다. – codepoke