PowerShell : cumul d’une propriété d’une Cmdlet
Au travers de l’exemple que je tiens à vous présenter ci-dessous, je voulais vous montrer l’instruction $foreach.MoveNext() et $foreach.Current. En réalité, je n’en ai pas eu besoin. J’ai fini par faire autrement.
Cumul de la mémoire utilisée par process
#Initialisation du tableau de résultat $res=@() #Récupération de la liste des process $processes=Get-Process |Select Name, PrivateMemorySize|Sort -Property Name #Initialisation d'un flag pour lire les données de la 1ère ligne de la Cmdlet $start=$true ForEach($process in $processes) { #Lecture de la 1ère ligne if($start) { $appli0=$process.Name $mem=$process.PrivateMemorySize $start=$false } #Lecture des autres lignes else { $appli1=$process.Name #Cumul dans $mem de la mémoire consommée si le process de la ligne courante (1) est le même que la ligne précédente (0) ! If($appli0 -eq $appli1) { $mem+=$process.PrivateMemorySize } #Ecriture dans le tableau de résultats Else { $res+=[PSCustomObject]@{application=$appli0;memoire=$mem/1024} $mem=$process.PrivateMemorySize } $appli0=$appli1 } } #traitement de la dernière ligne $res+=[PSCustomObject]@{application=$appli0;memoire=$mem/1024} #Nettoyage de l'objet $processes $processes=$null #Affichage et nettoyage du tableau de résultats $res|Out-GridView $res=$null