about_Operator_Precedence

簡単な説明

優先順位の PowerShell 演算子を一覧表示します。

詳細な説明

PowerShell 演算子を使用すると、単純で強力な式を構築できます。 このトピックでは、優先順位の演算子の一覧を示します。 優先順位は、同じ式に複数の演算子が含まれている場合に PowerShell が演算子を評価する順序です。

演算子の優先順位が等しい場合、PowerShell は式内に出現する演算子を左から右に評価します。 例外は、代入演算子、キャスト演算子、および否定演算子 (!, , -bnot) であり、-not右から左に評価されます。

かっこなどのエンクロージャを使用すると、標準の優先順位をオーバーライドし、閉じていない部分の前に式の囲まれた部分を評価するように PowerShell に強制できます。

次の一覧では、演算子が評価される順序で一覧表示されます。 同じ行または同じグループ内の演算子の優先順位は同じです。

[演算子] 列には、演算子が一覧表示されます。 [参照] 列には、オペレーターが説明されている PowerShell ヘルプ トピックが一覧表示されます。 トピックを表示するには、「.」と入力します get-help <topic-name>

演算子 リファレンス
$() @() () @{} about_Operators
. ?. (メンバー アクセス) about_Operators
:: (静的) about_Operators
[0] ?[0] (インデックス演算子) about_Operators
[int] (キャスト演算子) about_Operators
-split (単項) about_Split
-join (単項) about_Join
, (コンマ演算子) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (範囲演算子) about_Operators
-f (format 演算子) about_Operators
- (単項/負) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

次の演算子のグループは、同じ優先順位を持っています。 大文字と小文字が区別され、明示的に大文字と小文字が区別されないバリアントの優先順位は同じです。

演算子 リファレンス
-split (バイナリ) about_Split
-join (バイナリ) about_Join
-is -isnot -as about_Type_Operators
-eq -ne -gt -ge -lt -le about_Comparison_Operators
-like -notlike about_Comparison_Operators
-match -notmatch about_Comparison_Operators
-in -notIn about_Comparison_Operators
-contains -notContains about_Comparison_Operators
-replace about_Comparison_Operators

この一覧は、次の演算子を優先順位に従って再開します。

演算子 リファレンス
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

次の項目は true 演算子ではありません。 これらは、式の構文ではなく、PowerShell のコマンド構文の一部です。 割り当ては、常に最後に行われるアクションです。

SYNTAX リファレンス
. (dot-source) about_Operators
& (呼び出し) about_Operators
? <if-true> : <if-false> (三項演算子) about_Operators
?? (null-coalese 演算子) about_Operators
| (パイプライン演算子) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (パイプライン チェーン演算子) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

次の 2 つのコマンドは、算術演算子と、かっこを使用して PowerShell に式の囲まれた部分を最初に評価させる効果を示しています。

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

次の例では、ローカル ディレクトリから読み取り専用テキスト ファイルを取得し、変数に $read_only 保存します。

$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}

これは、次の例と同じです。

$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )

パイプライン演算子 () は代入演算子 (|=) よりも優先順位が高いため、コマンドレットが取得するGet-ChildItemファイルは、変数にWhere-Object割り当てられる前にフィルター処理のためにコマンドレットに$read_only送信されます。

次の例は、インデックス演算子がキャスト演算子よりも優先されることを示しています。

この式は、3 つの文字列の配列を作成します。 次に、値が 0 のインデックス演算子を使用して、配列内の最初のオブジェクト (最初の文字列) を選択します。 最後に、選択したオブジェクトを文字列としてキャストします。 この場合、キャストは効果がありません。

PS> [string]@('Windows','PowerShell','2.0')[0]
Windows

この式では、かっこを使用して、インデックスを選択する前にキャスト操作を強制的に実行します。 その結果、配列全体が (単一の) 文字列としてキャストされます。 次に、インデックス演算子は、文字列配列の最初の項目 (最初の文字) を選択します。

PS> ([string]@('Windows','PowerShell','2.0'))[0]
W

次の例では、(より大きい) 演算子の方が (論理 AND) 演算子よりも-and優先順位が高いため-gt、式の結果は FAL Standard Edition。

PS> 2 -gt 4 -and 1
False

これは、次の式と同じです。

PS> (2 -gt 4) -and 1
False

and 演算子の優先順位が高い場合、答えは TRUE になります。

PS> 2 -gt (4 -and 1)
True

ただし、この例では、オペレーターの優先順位を管理するための重要な原則を示します。 式が解釈するのが難しい場合は、既定の演算子の優先順位を強制する場合でも、かっこを使用して評価順序を強制します。 かっこを使用すると、スクリプトを読んでメインしているユーザーに意図が明確に表示されます。

関連項目