Question Job et Invoke-Command

Plus d'informations
il y a 15 ans 10 mois #6761 par Arthur
Job et Invoke-Command a été créé par Arthur
Bon suite à mon script
(powershell-scripting.com/index.php?optio...;id=6719&catid=5)

J'ai décidé de l'améliorer pour qu'il marche avec un Ip range de type : \"192.168.1.120-192.168.1.128\" l'utilisateur n'aurait donc plus qu'a taper le ip range et le programme récupère toutes les informations.
Dans un souci de rapidité j'ai décidé d'utiliser les Start-Job pour qu'il traite le tout de façon parallèle.
Seulement voilà les job bloquent avec Invoke-Comand et restent sur running. Et je ne sait pas pourquoi.

Pour illustrer mon problème j'ai tapé un nouveau script simplifiant le problème à l'extrême.(cf pièce jointe)

J'ai aussi testé mon script en utilisant -AsJob sur le invoke-command mais cela complique encore plus le problème.

Je pense que le problème est stupide mais je n'arrive pas à voir pourquoi \"Invoke-Command\" bloque. :pinch:

La pièce jointe recup_ip.ps1 est absente ou indisponible




EDIT : Bon j'ai test le script sur mes VM il marche. :angry:
Mais il bug en condition \"réel\". :angry:
Existe-t-il un moyen pour voir si Invoke-command retourne une erreur? et l'afficher?

Je pense que le problème viens du paramètre credential de Invoke-command.<br><br>Message édité par: bilbao, à: 7/05/10 13:57
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 10 mois #6764 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Job et Invoke-Command
Salut,
bilbao écrit:

J'ai aussi testé mon script en utilisant -AsJob sur le invoke-command mais cela complique encore plus le problème.

Il me semble que dans ton contexte c'est soit l'un (Start-Job) soit l'autre (Invoke-Commande -AsJob).
Le code proposé précédemment, que tu réutilises dans ton exemple, n'est pas \&quot;générique\&quot;, il répondait à un besoin dans un contexte particulier. Il te faut l'adapter si toutefois il n'y a pas de meilleure approche.
[code:1]$CurrentJob=Invoke-Command -ComputerName $Nom_pc -asJob -Credential $cred -ScriptBlock {
...
[/code:1]
La manipulation du résultat se fait dans le traitement lié à l'abonné, s'il existe :
[code:1] Switch ($eventname) {
'Completed' {
#Récupère les infos
Receive-Job -id $Sender.Id |
Export-Csv -Path \&quot;C:\Liste-process.csv\&quot;[/code:1]
Alors si :
bilbao écrit:

il traite le tout de façon parallèle.

Comme les événements sont traités les uns à la suite des autres ton fichier ne risque pas d'être verrouillé (un écrivain / N lecteurs).
Dans les autres cas je ne sais pas si cela peut poser pb.
bilbao écrit:

Existe-t-il un moyen pour voir si Invoke-command retourne une erreur? et l'afficher ?

D'aprés la doc elle le sera dans le résultat émis, une erreur est aussi un objet.<br><br>Message édité par: Laurent Dardenne, à: 7/05/10 14:09

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 10 mois #6797 par Arthur
Réponse de Arthur sur le sujet Re:Job et Invoke-Command
J'ai essayé mon script avec -AsJob (encore) mais j'ai due définitivement abandonné cet idée il n'apportait pas d'améliorations.
Ce que je comprend pas c'est que cela bloque avec un commande toute conne :pinch: :

[code:1]

PS D:\ahemon\Scripts&gt; Start-Job -ArgumentList $cred -ScriptBlock { param ($cred) Invoke-Command -computername 192.168.1.2 -credential $cred -scriptblock { Get-process } }

[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 10 mois #6811 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Job et Invoke-Command
bilbao écrit:

Ce que je comprend pas c'est que cela bloque avec un commande toute conne :pinch: :

Soit c'est un bug soit tu utilises cette commande dans un contexte qui n'est pas le sien.
Par exemple le premier exemple fonctionne, le second aussi, mais pas le troisième qui rencontre le même problème que tu as énoncé :
[code:1]
$j=invoke-command -computername LocalHost -scriptblock {sleep 5;get-process powershell} -asjob
$p=start-job -scriptblock {invoke-command -computername LocalHost -scriptblock {get-process powershell}}
$p2=start-job -scriptblock {invoke-command -computername LocalHost -scriptblock {get-process powershell} -asjob }
[/code:1]
La dernière commande créee un job dans un job, chaque job est lui même constitué d'un job primaire et de job fils :
[code:1]$p2.childjobs[/code:1]
Est-ce un pb d'imbrication ? Je ne sais pas.
En tous cas si un cmdlet propose le paramètre -asjob, il y a de forte chance, je ne pas vérifié le code, qu'il soit à privilégier en lieu et place de Start-Job.
Tu peux aussi consulter l'exemple 8 proposé dans l'aide de Invoke-Commande.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 10 mois #6812 par Arthur
Réponse de Arthur sur le sujet Re:Job et Invoke-Command
Le truc qui rend fou c'est que justement ton deuxième exemple ne marche pas sur mon PC,il bloque sur running sans erreur ni rien, meme avec localhost (Il file aucune info).Mais il marche sur mes VM. :pinch:<br><br>Message édité par: bilbao, à: 11/05/10 15:18

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 10 mois #6815 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Job et Invoke-Command
bilbao écrit:

Le truc qui rend fou c'est que justement ton deuxième exemple ne marche pas sur mon PC,il bloque sur running sans erreur ni rien, meme avec localhost

C'est une erreur de ma part, désolé, j'ai le même soucis.
Je voulais mettre en évidence l'usage de Invoke-commande avec et sans le paramètre -AsJob :
[code:1]invoke-command -computername LocalHost -scriptblock {sleep 5;get-process powershell}
$j=invoke-command -computername LocalHost -scriptblock {sleep 5;get-process powershell} -asjob
[/code:1]
Il me semble avoir vu sur MSConnect un rapport signalant un pb +- identique...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.046 secondes
Propulsé par Kunena