Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0
РАЗДЕЛ
about_Operator_Precedence
КРАТКОЕ ОПИСАНИЕ
Содержит список операторов Windows PowerShell, расположенных в порядке приоритета.
[Этот раздел был создан при участии Кирка Манро (Kirk Munro), специалиста MVP по Windows PowerShell из Оттавы, Онтарио]
ПОДРОБНОЕ ОПИСАНИЕ
Операторы Windows PowerShell позволяют создавать простые, но эффективные выражения. В этом разделе операторы перечислены в порядке приоритета. Порядок приоритета — это последовательность, в которой Windows PowerShell выполняет операторы при наличии нескольких операторов в одном выражении.
Если операторы имеют равный приоритет, Windows PowerShell выполняет их слева направо. Исключениями являются операторы присваивания, операторы приведения и операторы отрицания (!, -not, -bnot), которые выполняются справа налево.
Можно использовать вложения, например круглые скобки, чтобы переопределить стандартный порядок приоритета и указать Windows PowerShell выполнять заключенную в скобки часть выражения до невключенной части.
В следующем списке операторы перечислены в порядке их выполнения. Операторы в одной строке или в одной группе имеют одинаковый приоритет.
В столбце «Оператор» перечислены операторы. В столбце «Справочные сведения» приведены разделы справки Windows PowerShell с описанием оператора. Чтобы открыть раздел, введите «get-help <имя_раздела>».
OPERATOR REFERENCE
-------- ---------
$() @() about_Operators
. (dereference) :: (static) about_Operators
[0] (index operator) about_Operators
[int] (cast operators) about_Operators
-split (unary) -join (unary) about_Split, about_Join
, (comma operator) about_Operators
++ -- about_Assignment_Operators
-not ! -bNot about_Logical_Operators, about_Comparison_Operators
.. (range operator) about_Operators
-f (format operator) about_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators
Следующая группа операторов имеет одинаковый приоритет. Их варианты с учетом регистра и явно без учета регистра имеют одинаковый приоритет.
-split (binary) about_Split
-join (binary) about_Join
-is -isnot -as about_Type_Operators
-eq -ne -gt -gt -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 -bor -bxor about_Comparison_Operators
-and -or -xor about_Comparison_Operators
. (dot-source) & (call) about_Scopes, about_Operators
| (pipeline operator) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
= += -= *= /= %= about_Assignment_Operators
ПРИМЕРЫ
В следующих двух командах показаны арифметические операторы и результат использования скобок, чтобы вынудить Windows PowerShell в первую очередь выполнять заключенную в скобки часть выражения.
C:\PS> 2 + 3 * 4
14
C:\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 для выбора первого объекта в массиве. Это первая строка. Наконец, оно приводит выбранный объект к виду строки. В этом случае приведение ни на что не влияет.
C:\PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
Второе выражение использует скобки для принудительного выполнения операции приведения перед выбором индекса. В результате весь массив преобразуется в (одну) строку. Затем оператор индекса выбирает первый элемент в массиве строк, который является первым символом.
C:\PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
В следующем примере, поскольку оператор -gt (больше чем) имеет более высокий приоритет, чем оператор -and (логическое И), результатом выражения является значение FALSE.
C:\PS> 2 -gt 4 -and 1
False
Оно аналогично следующему выражению.
C:\PS> (2 -gt 4) -and 1
False
Если бы более высокий приоритет был у оператора -and, результатом было бы значение TRUE.
C:\PS> 2 -gt (4 -and 1)
True
Однако в этом примере демонстрируется важнейший принцип управления приоритетом операторов. Если выражение является сложным для интерпретации, используйте скобки для установки принудительного порядка выполнения даже в том случае, если действует приоритет операторов по умолчанию. Благодаря скобкам люди, которые читают сценарии и работают с ними, могут четко понимать ваши намерения.
СМ. ТАКЖЕ
about_Assignment_Operators
about_Comparison_Operators
about_Join
about_Logical_Operators
about_Operators
about_Redirection
about_Scopes
about_Split
about_Type_Operators