Question [Resolu] Garder les valeurs d'un trap

Plus d'informations
il y a 14 ans 10 mois #9556 par FLORENT
Bonjour a tous,

Je tourne sous Powershell v1, je souhaite faire un script qui envoi un ping a une liste de PC, le souci c'est que des fois j'ai une erreur. Erreur que je traite avec un trap mais voila le souci : Les variables modifiees dans le trap ne sont pas gardees en memoire.

Voici mon code :
[code:1]#Computer for which the ping don't work
$textFail = @()
$textFail += \"Liste d'ordinateurs\"
#Computer for which the ping work
$textSuccess = @()
$textSuccess += \"Liste d'ordinateurs\"
#Computer List Export
$listePC = @()
$listePC += Get-content ListePC.txt
$erreure = \"false\"

#for each computer
foreach($pc in $listePC)
{
#we try a ping
$ping = New-Object Net.NetworkInformation.Ping
$PingResult = $ping.send($pc)
trap
{
$erreure = \"true\"
continue
}
if ($erreure -ne \"true\"«»)
{
#If ping works, the pc is send to success list
$pc.Tostring()
if ($PingResult.Status.Tostring() -eq \"success\"«»)
{
$textSuccess += $pc
}
#If ping doesn't work, the pc is send to fail list
else
{
$textFail += $pc
}
}
else
{
$textFail += \"Unfounded PC\"
$textFail += $pc
$erreure = \"false\"
}

$pc
}

$textSuccess > sucess.txt
$textFail > fail.txt[/code:1]

Quand je regarde avec un debogueur lorsque l'on rentre dans le trap, $erreure passe bien en true mais repasse en false aussitot sortit du trap.

Please Help !!!!!

Message édité par: toaster, à: 4/05/11 03:53<br><br>Message édité par: toaster, à: 10/05/11 04:27

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

Plus d'informations
il y a 14 ans 10 mois #9558 par Laurent Dardenne
Salut,
soit tu utilises un appel à get-variable en précisant le scope, soit utilises une globale ( peut être péréférable dans cette construction).
Sinon il existe les valeurs booléenne $true et $false...

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 10 mois #9562 par FLORENT
Réponse de FLORENT sur le sujet Re:Garder les valeurs d'un trap
Merci pour ta reponse, j'avais regle le probleme un peu plus tot en utilisant une technique un peu moche mais qui a marche : J'ai stocke le true/false dans un fichier texte :)

Ca donne ca :
[code:1]#Computer for which the ping don't work
$textFail = @()
$textFail += \&quot;Computer List\&quot;
#Computer for which the ping work
$textSuccess = @()
$textSuccess += \&quot;Computer List\&quot;
#Computer for which the ping don't work
$textFailAccess = @()
$textFailAccess += \&quot;Unfounded Computer\&quot;
#Computer List Export
$listePC = @()
$listePC += Get-content ListePC2.txt
\&quot;false\&quot; &gt; erreur.txt

#for each computer
foreach($pc in $listePC)
{
#we try a ping
$ping = New-Object Net.NetworkInformation.Ping
$PingResult = $ping.send($pc)
trap
{
\&quot;true\&quot; &gt; erreur.txt
continue
}
if ((Get-Content erreur.txt) -ne \&quot;true\&quot;«»)
{
#If ping works, the pc is send to success list
if ($PingResult.Status.Tostring() -eq \&quot;success\&quot;«»)
{
$textSuccess += $pc
}
#If ping doesn't work, the pc is send to fail list
else
{
$textFail += $pc
}
}
else
{
$textFailAccess += $pc
}
\&quot;false\&quot; &gt; erreur.txt
$pc
}

$textSuccess &gt; sucess.txt
$textFail &gt; fail.txt
$textFailAccess &gt; failAccess.txt[/code:1]

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

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