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

あなたは何を探したいですか?すべての成績は範囲内にあるのですか?少なくとも1つの等級が範囲に入っていますか? – 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 

ノート

  • ドンを使用しないスコープ。それを使うときは分かります。あなたが100%確実でない限り、それを使用しないでください。 (個人的には、それが必要な状況に遭遇したことは一度もありませんでした。)
  • 単純なカンマ区切りの値リストで配列を作成できます。
  • -contains演算子は配列内の完全一致をチェックします。 -notcontainsはその逆です。
  • whereの条件に一致する値がない場合は、ifのチェックでnullが扱われ、NULLは$nullになります。
+0

Powershellでアレイを使用することについては理解できません。 – Ovie

+0

チュートリアル、ブログ投稿、ドキュメントを探してみるとたくさんあります。 – Tomalak

関連する問題