Question
Une fonction dans un Job
- Seguin Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
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.
- SiSMik
- Hors Ligne
- Membre platinium
-
- Messages : 492
- Remerciements reçus 0
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
-
- Messages : 530
- Remerciements reçus 0
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.
- Seguin Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
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.
- SiSMik
- Hors Ligne
- Membre platinium
-
- Messages : 492
- Remerciements reçus 0
ç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
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.
- Seguin Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
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 <<<<
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.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Une fonction dans un Job