Question Une fonction dans un Job

Plus d'informations
il y a 13 ans 8 mois #12343 par Seguin Christophe
Bonjour à tous,

Cela fait 2 jours que je misère sur un petit problème.
J'essaye désespérément à exécuter une fonction dans un JOB.
Donc je lance mon Job :
[code:1][string]$trois = $textboxOctet3.Text.ToString()
[string]$quatre = $textboxOctet4.Text.ToString()
Start-Job -ScriptBlock {AnalyseBis $trois $quatre}[/code:1]
Ensuite je verifie qu'il est bien fini :
[code:1]Get-Job | Out-GridView[/code:1]

Et dès que je veux le recupérer comme ceci :
[code:1]Receive-Job -Id 1 | Out-GridView[/code:1]

J'ai ce message qui me dit :

Le terme « AnalyseBis » n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez l'orthographe du nom, o
ERROR: u si un chemin d'accès existe, vérifiez que le chemin d'accès est correct et réessayez.
ERROR: + CategoryInfo : ObjectNotFound: (AnalyseBis:String) [], CommandNotFoundException
ERROR: + FullyQualifiedErrorId : CommandNotFoundException
ERROR:


Voilà je ne comprend pas cette erreur car je pense que ce que je fais est à peut pret correct..

Merci de voter aide :)

Christophe

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

Plus d'informations
il y a 13 ans 8 mois #12345 par SiSMik
Réponse de SiSMik sur le sujet Re:Une fonction dans un Job
Pourrait-on voir votre function analyseBis ?

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

Plus d'informations
il y a 13 ans 8 mois #12347 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:Une fonction dans un Job
Bonjour,

Quand tu vas créer ton Job, tu vas générer une nouvelle \"session\" powershell.

Ce qui implique que ta fonction ne sera pas passé de ta session courante (qui lance le job) au job enfant.

De plus, les variables ne sont pas passées non plus pour cela il faut utiliser ArgumentList.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

Plus d'informations
il y a 13 ans 8 mois #12348 par Seguin Christophe
Bonjour,

Oui j'ai pas mis les parametres car sinon mon Job et en failed..

[code:1] [string]$trois = $textboxOctet3.Text.ToString()
[string]$quatre = $textboxOctet4.Text.ToString()
Start-Job -ScriptBlock {param($3,$4) AnalyseBis $3 $4} -ArgumentList $trois, $quatre
[/code:1]

Voici ma fonction AnalyseBis :
[code:1]function AnalyseBis {
Param ([string]$Troisieme, [string]$Quatrieme)
[string]$donnees = \"\"
for($i = 1;$i -lt $Quatrieme; $i++){
[string]$PremierOctet = \"10.\"
[string]$DeuxiemeOctet = \"11.\"
[string]$quatiremeOctet = $i
[string]$TroisiemeOctet = $Troisieme
[string]$Adresse = ($PremierOctet + $DeuxiemeOctet + $TroisiemeOctet + \".\" + $i)
$Ping = New-Object System.Net.NetworkInformation.Ping
$reply = $Ping.Send($Adresse, 10)
if($reply.Status -eq \"Success\"«»){
try{
$Local = Get-WmiObject Win32_ComputerSystem -ComputerName $Adresse -ErrorAction SilentlyContinue
$donnees += $Local.name + \" \" + $Adresse + \"`r`n\"
}
catch{
$donnees += \"NOK\"+ \" \" + $Adresse + \"`r`n\"
}
}
else{
}
}
return $donnees
}[/code:1]

Merci de voter aide

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

Plus d'informations
il y a 13 ans 8 mois #12349 par SiSMik
Réponse de SiSMik sur le sujet Re:Une fonction dans un Job
Si vous faites [code:1]Invoke-Expresion \"Start-Job...\" [/code:1]

ça donne quoi ?

Sinon vous pouvez toujours mettre votre functions dans un fichier .ps1 l'enregistrer et l'éxécuter avec le start-job en lui passant les arguments

[code:1]Start-Job {c:\temp\test.ps1 $trois $quatre} -argumentlist $trois,$quatre [/code:1]

J'ai jamais eu ce genre de figure... et je peux pas tester la

Seguin écrit:

Bonjour,
Merci de voter aide


Je voterai Aide la prochaine élection :laugh:

Message édité par: benduru, à: 5/07/12 14:46<br><br>Message édité par: benduru, à: 5/07/12 14:48

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

Plus d'informations
il y a 13 ans 8 mois #12350 par Seguin Christophe
\&quot;votre\&quot; ^^

Donc avec ce que vous m'avez dis cela me donne une autre erreur :

ERROR: Le terme « System.Management.Automation.PSRemotingJob » n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable.
ERROR: Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès est correct et réessayez.
ERROR: Au niveau de ligne : 1 Caractère : 43
ERROR: + System.Management.Automation.PSRemotingJob &lt;&lt;&lt;&lt;
ERROR: + CategoryInfo : ObjectNotFound: (System.Manageme...n.PSRemotingJob:String) [], CommandNotFoundException
ERROR: + FullyQualifiedErrorId : CommandNotFoundException
ERROR:


En faisant ceci :

[code:1] [string]$trois = $textboxOctet3.Text.ToString()
[string]$quatre = $textboxOctet4.Text.ToString()
Invoke-Expression (Start-Job -ScriptBlock {param($3,$4) AnalyseBis $3 $4} -ArgumentList $trois, $quatre)[/code:1]

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

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