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
Однако в этом примере показан важный принцип управления приоритетом операторов. Если выражение трудно интерпретировать, используйте круглые скобки для принудительного выполнения порядка оценки, даже если он заставляет приоритет оператора по умолчанию. Круглые скобки делают ваши намерения понятными для людей, которые читают и поддерживают ваши сценарии.
См. также
PowerShell
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по