2017-10-17 106 views
0

我无法检查$ Grades数组是否落入$ Values数组的范围,以及如何解决此问题?使用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

你想知道什么?所有等级都在范围内?至少有一个等级在范围内? – Tomalak

+0

我想知道是否所有的$等级都在范围内 – Ovie

回答

0

可以使用Where-Object小命令(化名where)来过滤数组:

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

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

产生这样的输出对我来说:

 
These grades are not valid: 5000 

  • 唐不使用Global范围。当它是时候使用它,你会知道。只要你不是100%确定,就不要使用它。 (就我个人而言,我从来没有遇到过使用它的情况,我怀疑你会这样做。)
  • 您可以使用简单的以逗号分隔的值列表创建一个数组。
  • 运算符-contains检查数组中的完全匹配。 -notcontains则相反。
  • 如果没有值与where条件匹配,则$GradesNotInRange将为$null,在if检查中将null视为false。
+0

我不明白什么时候在Powershell中使用数组有没有可以给我的指导? – Ovie

+0

我想你会发现大量的教程,博客文章和文档,如果你只是找他们。 – Tomalak