2011-03-04 1 views
1

Jason Archer m'a aidé à résoudre my last issue, mais en testant sa solution, j'ai trébuché sur le vrai problème. Mon serveur n'exécutera pas correctement les travaux en arrière-plan chaînés, mais mes ordinateurs portables le feront.Comment déboguer un travail d'arrière-plan PowerShell?

Si j'exécute les scripts du problème précédent sur mes ordinateurs portables, ils fonctionnent parfaitement. Le script A démarre le script B en tant que travail d'arrière-plan et le script B appelle le script C depuis ce travail, et toutes les sorties sont reçues. Si j'exécute exactement les mêmes scripts sur mon serveur, le script A appelle le script B et le script B se bloque indéfiniment. Si je lance le script B directement, il s'exécute parfaitement sur le serveur ou sur les ordinateurs portables. C'est quelque chose à propos du travail d'arrière-plan qui me tue. $ PSVersionTable renvoie les mêmes résultats sur tous les ordinateurs, bien que je devais utiliser des programmes d'installation différents sur WinXP vs Win2003R2.

Ce qui pourrait causer la différence de comportement?

Existe-t-il un moyen de résoudre ce qui se passe dans les tâches d'arrière-plan? Si je pouvais voir les lignes de commande reçues (j'ai enregistré ce qui est envoyé, mais parfois les choses dérivent), ou quel objet est vraiment suspendu, peut-être que cela aiderait, mais le débogueur ne m'y amènera pas. Peut-être y at-il un moyen d'appeler le travail au sein de l'ISE comme s'il fonctionnait en arrière-plan?

Répondre

1

Ah. Je pense que j'ai peut-être ma réponse.

ordinateur portable:

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. 

Serveur:

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. 

Si quelqu'un peut confirmer ou donner des informations sur les travaux de fond de dépannage, je vais marquer la réponse à votre question.

+0

Je doute la solution à mon problème sera de permettre Remoting sur tous les mes serveurs, mais je peux aller avec Start-Process pour commencer ces travaux en premier plan. Cela fonctionne. – codepoke

0

Vous pouvez obtenir le résultat d'un travail Powershell en utilisant Receive Job. Par exemple, si nous avions un emploi comme comme suit:

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

Nous pourrions obtenir la sortie du travail comme celui-ci:

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

Par ma question initiale, je n'ai aucune difficulté à recevoir mes travaux lorsqu'il est exécuté sur un ordinateur avec l'accès à distance activé. Ce n'est pas le point de confusion. J'essaie (mais pas très difficile en ce moment) de savoir si le problème est avec WMI ou à distance. J'ai entendu la réponse pour indiquer l'un ou l'autre, mais je suis sur le point d'avoir un accès distant activé sur tous nos serveurs. Ce sera un jour heureux. – codepoke

Questions connexes