2017-10-17 5 views
0

J'ai des problèmes pour vérifier si mon tableau $ Grades tombe dans la plage du tableau $ Values ​​et comment puis-je résoudre ce problème?Comparaison des valeurs d'un tableau en utilisant l'instruction if

$Global:Values = 1..100 
#$Global:Grades[0] = 5000 $Global:Grades[1] = 30 

if($Global:Grades[0] -gt $Global:Values[0] -and $Global:Grades[0] -lt $Global:Values[99]) 
{ 
    Write-Host "Works!" 
} 
+0

Que voulez-vous savoir? Que toutes les notes sont à portée? Au moins une note est-elle dans la gamme? – Tomalak

+0

Je voulais juste savoir si tous les $ Grades sont dans la gamme – Ovie

Répondre

0

Vous pouvez utiliser l'applet de commande Where-Object (alias where) pour filtrer un tableau:

$Values = 1..100 
$Grades = 5000,30 
$GradesNotInRange = $Grades | where { $Values -notcontains $_ } 

if ($GradesNotInRange) { 
    "These grades are not valid: $GradesNotInRange" 
} else { 
    "All grades are valid." 
} 

produit cette sortie pour moi:

 
These grades are not valid: 5000 

Remarques

  • Don n'utilise pas le Global portée. Quand il est temps de l'utiliser, vous le saurez. Tant que vous n'êtes pas sûr à 100%, ne l'utilisez pas. (Personnellement, je n'ai jamais rencontré une situation où l'utiliser était nécessaire, j'en doute.)
  • Vous pouvez créer un tableau avec une simple liste de valeurs séparées par des virgules.
  • L'opérateur -contains vérifie les correspondances exactes dans un tableau. -notcontains fait le contraire.
  • Lorsque aucune valeur ne correspond à la condition where, $GradesNotInRange sera $null et la valeur null sera traitée comme false dans la vérification if.
+0

Je ne comprends pas quand il s'agit d'utiliser des tableaux dans Powershell est-il un guide que vous pouvez me donner? – Ovie

+0

Je suppose que vous trouverez des tonnes de tutoriels, des articles de blog et de la documentation si vous les recherchez. – Tomalak