about_Operator_Precedence

Краткое описание

Выводит список операторов PowerShell в порядке приоритета.

Подробное описание

Операторы PowerShell позволяют создавать простые, но мощные выражения. В этом разделе перечислены операторы в порядке приоритета. Порядок приоритета — это порядок, в котором PowerShell вычисляет операторы, когда несколько операторов отображаются в одном выражении.

Если операторы имеют равный приоритет, PowerShell вычисляет их слева направо, как они отображаются в выражении. Исключения — это операторы присваивания, операторы приведения и операторы отрицания (!, -not, -bnot), которые вычисляются справа налево.

Вы можете использовать корпуса, такие как скобки, для переопределения стандартного порядка приоритета и принудительной оценки заключенной части выражения перед незакрытой частью.

В следующем списке операторы перечислены в порядке их вычисления. Операторы в одной строке или в той же группе имеют равный приоритет.

В столбце "Оператор" перечислены операторы. В столбце "Справочник" перечислены раздел справки PowerShell, в котором описан оператор. Чтобы отобразить раздел, введите get-help <topic-name>.

OPERATOR ССЫЛКИ
$() @() () @{} 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 (оператор формата) about_Operators
- (унарный/отрицательный) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

Следующая группа операторов имеет равный приоритет. Их варианты с учетом регистра и явным образом не учитывает регистр, имеют одинаковый приоритет.

OPERATOR ССЫЛКИ
-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

Список возобновляется здесь со следующими операторами в порядке приоритета:

OPERATOR ССЫЛКИ
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

Следующие элементы не являются истинными операторами. Они являются частью синтаксиса команды PowerShell, а не синтаксиса выражений. Назначение всегда является последним действием, которое происходит.

SYNTAX ССЫЛКИ
. (dot-source) about_Operators
& (вызов) about_Operators
? <if-true> : <if-false> (оператор Ternary) about_Operators
?? (оператор null-coalese) about_Operators
| (оператор конвейера) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (операторы цепочки конвейеров) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Примеры

В следующих двух командах показаны арифметические операторы и эффект использования круглых скобок для принудительного вычисления заключенной части выражения.

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 .

В следующем примере показано, что оператор индекса имеет приоритет над оператором приведения.

Это выражение создает массив из трех строк. Затем он использует оператор индекса со значением 0, чтобы выбрать первый объект в массиве, который является первой строкой. Наконец, он приводит выбранный объект в виде строки. В этом случае приведение не действует.

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

Это выражение использует круглые скобки, чтобы принудительно выполнить операцию приведения до выбора индекса. В результате весь массив приведение в виде (одной) строки. Затем оператор индекса выбирает первый элемент в массиве строк, который является первым символом.

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

В следующем примере, так как -gt оператор (больше) имеет более высокий приоритет, чем -and оператор (логический И), результат выражения — FALSE.

PS> 2 -gt 4 -and 1
False

Это эквивалентно следующему выражению.

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

Если оператор -and имеет более высокий приоритет, ответ будет TRUE.

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

Однако в этом примере показан важный принцип управления приоритетом операторов. Если выражение трудно интерпретировать, используйте круглые скобки для принудительного выполнения порядка оценки, даже если он заставляет приоритет оператора по умолчанию. Круглые скобки делают ваши намерения понятными для людей, которые читают и поддерживают ваши сценарии.

См. также