2017-10-17 107 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