Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1614 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème avec boucle foreach powershell

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec boucle foreach powershell

n°2288336
Boba_Fett
PSN:BobaFett59 GT:BobaFett1978
Posté le 21-09-2016 à 11:31:03  profilanswer
 

Bonjour,
 
Savez-vous me dire pourquoi lorsque je fais une boucle foreach de ce type, que je commence avec la variable NbError initialisée à 0 et que l’on part du principe que le fichier ne contient pas l’erreur « U00011666 » je me retrouve à la fin avec ma variable NbError à 1 ? :
 
$NbError=0
$monfichier="c:\toto.txt"
$searchError="U00011666"
 
$test= get-content $monfichier | select-string -CaseSensitive $searchError      
foreach ($Errorline in $test)    
{
    $NbError++
}  
 
Write-Output $NbError
 
Donc pour résumer :
 
Si l’erreur est absente, j’initialise ma $NbError à 0 puis elle passe à 1 après la boucle (donc pour moi pas normal)
 
Si l’erreur apparait une fois, j’initialise ma $NbError à 0 puis elle passe à 1 après la boucle également ( donc à priori normal)
 
Si l’erreur apparait 2 fois, j’initialise ma $NbError à 0 puis elle passe à 2 (donc à priori normal)
 
Je veux que ma variable NbError reste à 0 si l’erreur n’apparait pas et qu’elle passe à 1 si une erreur apparait.
 
Merci d'avance
 
 
 

mood
Publicité
Posté le 21-09-2016 à 11:31:03  profilanswer
 

n°2288340
Boba_Fett
PSN:BobaFett59 GT:BobaFett1978
Posté le 21-09-2016 à 12:55:55  profilanswer
 

Je crois avoir compris ce qu'il se passe, en fait la commande get content renvoi quelque chose de vide même si l'erreur est introuvable dans mon fichier. Et donc à priori la boucle foreach réagit si la variable $test contient du vide et donc ma $Nb Error est incrémentée.

 

Pour palier au problème j'ai modifié la boucle en y ajoutant un if :

 

$test= get-content $monfichier | select-string -CaseSensitive $searchError    
foreach ($Errorline in $test)    
{
    if ([string]$Errorline -ne "" )
    {
        $NbError++
    }
}

 

Ainsi ça n'incrémente que si ce n'est pas vide.


Message édité par Boba_Fett le 21-09-2016 à 13:02:28

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème avec boucle foreach powershell

 

Sujets relatifs
Problème de complexité d'algorithmeboucle de dico et liste
Probleme de quoteProbleme pour finir VBA sur mon fichier
[Novice] De la ldc à Tkinter Problème de fonction[Script Windows] Problème Shutdown Windows 10
problème socket et envoi paquet UPDprobleme de structure lors de l'affichage de la page
Problème d'heure en php (décalage)Problème de transfert Filezilla
Plus de sujets relatifs à : Problème avec boucle foreach powershell


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR