Сведения об операторах
Краткое описание
Описывает операторы, поддерживаемые PowerShell.
Подробное описание
Оператор — это элемент языка, который можно использовать в команде или выражении. PowerShell поддерживает несколько типов операторов для управления значениями.
Арифметические операторы
Используйте арифметические операторы (+
, -
, *
, /
, %
) для вычисления значений в команде или выражении. С помощью этих операторов можно сложить, вычесть, умножить или разделить значения, а также вычислить остаток (модуль) операции деления.
Оператор сложения объединяет элементы. Оператор умножения возвращает указанное количество копий каждого элемента. Арифметические операторы можно использовать в любом типе .NET, который их реализует, например, Int
, String
, DateTime
Hashtable
, и Массивы.
Дополнительные сведения см. в разделе about_Arithmetic_Operators.
Операторы присваивания
Используйте операторы присваивания (=
, +=
, -=
, *=
/=
, , ) %=
для назначения, изменения или добавления значений в переменные. Арифметические операторы можно объединить с назначением, чтобы назначить результат арифметической операции переменной.
Дополнительные сведения см. в разделе about_Assignment_Operators.
Операторы сравнения
Используйте операторы сравнения (-eq
, -ne
, -gt
, -lt
, -le
, ) -ge
для сравнения значений и условий тестирования. Например, можно сравнить два строковых значения, чтобы определить, равны ли они.
Операторы сравнения также включают операторы, которые находят или заменяют шаблоны в тексте. Операторы (, , ) используют регулярные выражения, а (-like
, -notlike
) используют подстановочные знаки *
. -replace
-notmatch
-match
Операторы сравнения вложения определяют, отображается ли тестовое значение в наборе ссылок (-in
, , -notin
, -contains
-notcontains
).
Операторы сравнения типов (-is
, ) определяют, -isnot
является ли объект заданным типом.
Операторы побитового сравнения (-bAND
, -bOR
, -bXOR
, -bNOT
) управляют битовые шаблоны в значениях.
Дополнительные сведения см. в разделе about_Comparison_Operators.
Логические операторы
Используйте логические операторы (-and
, -or
, -xor
, -not
, !
) для соединения условных операторов в единый сложный условный оператор. Например, можно использовать логический -and
оператор для создания фильтра объектов с двумя разными условиями.
Дополнительные сведения см. в разделе about_Logical_Operators.
Операторы перенаправления
Используйте операторы перенаправления (>
, >>
, 2>
, 2>>
и 2>&1
) для отправки выходных данных команды или выражения в текстовый файл. Операторы перенаправления работают аналогично командлету Out-File
(без параметров), но также позволяют перенаправлять выходные данные ошибок в указанные файлы. Вы также можете использовать командлет для перенаправления Tee-Object
выходных данных.
Дополнительные сведения см. в разделе about_Redirection
Операторы разделения и соединения
Операторы -split
и -join
делят и объединяют подстроки. Оператор -split
разделяет строку на подстроки. Оператор -join
объединяет несколько строк в одну строку.
Дополнительные сведения см. в разделе about_Split и about_Join.
Операторы работы с типами
Используйте операторы типа (-is
, -isnot
, -as
), чтобы найти или изменить тип платформа .NET Framework объекта.
Дополнительные сведения см. в разделе about_Type_Operators.
Унарные операторы
Используйте унарные операторы для увеличения или уменьшения переменных или свойств объекта, а также для задания целых чисел положительным или отрицательным числам. Например, чтобы увеличить переменную $a
с 9
до 10
, введите $a++
.
Специальные операторы
Специальные операторы имеют конкретные варианты использования, которые не вписываются ни в одну другую группу операторов. Например, специальные операторы позволяют выполнять команды, изменять тип данных значения или извлекать элементы из массива.
@( )
Оператор subexpression массива
Возвращает результат одного или нескольких операторов в виде массива. Если имеется только один элемент, массив имеет только один член.
@(Get-WmiObject win32_logicalDisk)
&
Оператор вызова
Выполняет команду, скрипт или блок скрипта. Оператор вызова, также известный как оператор вызова, позволяет выполнять команды, которые хранятся в переменных и представлены строками или блоками скриптов. Оператор вызова выполняется в дочернем область. Дополнительные сведения об областях см. в разделе about_scopes.
В этом примере команда сохраняется в строке и выполняется с помощью оператора call.
PS> $c = "get-executionpolicy"
PS> $c
get-executionpolicy
PS> & $c
AllSigned
Оператор вызова не анализирует строки. Это означает, что нельзя использовать параметры команды в строке при использовании оператора вызова.
PS> $c = "Get-Service -Name Spooler"
PS> $c
Get-Service -Name Spooler
PS> & $c
& : The term 'Get-Service -Name Spooler' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling of
the name, or if a path was included, verify that the path is correct and
try again.
At line:1 char:2
+ &$c
+ ~~
+ CategoryInfo : ObjectNotFound: (Get-Service -Name Spooler:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Командлет Invoke-Expression может выполнять код, который вызывает ошибки синтаксического анализа при использовании оператора вызова.
PS> &"1+1"
& : The term '1+1' is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
At line:1 char:2
+ &"1+1"
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (1+1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS> Invoke-Expression "1+1"
2
Оператор вызова можно использовать для выполнения скриптов с использованием их имен файлов. В приведенном ниже примере показано имя файла скрипта, содержащее пробелы. При попытке выполнить скрипт PowerShell вместо этого отображает содержимое строки в кавычках, содержащей имя файла. Оператор call позволяет выполнить содержимое строки, содержащей имя файла.
PS C:\Scripts> Get-ChildItem
Directory: C:\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/28/2018 1:36 PM 58 script name with spaces.ps1
PS C:\Scripts> ".\script name with spaces.ps1"
.\script name with spaces.ps1
PS C:\Scripts> &".\script name with spaces.ps1"
Hello World!
Дополнительные сведения о блоках скриптов см . в разделе about_Script_Blocks.
[ ]
Оператор cast
Преобразует или ограничивает объекты указанным типом. Если не удается преобразовать объекты, PowerShell выдает ошибку.
[datetime]$birthday = "1/20/88"
[int64]$a = 34
,
Оператор "Запятая"
В качестве двоичного оператора запятая создает массив. В качестве унарного оператора запятая создает массив с одним элементом. Поместите запятую перед элементом.
$myArray = 1,2,3
$SingleArray = ,1
.
Оператор точечных источников
Запускает скрипт в текущем область, чтобы все функции, псевдонимы и переменные, создаваемые скриптом, добавлялись в текущий область.
. c:\scripts\sample.ps1
Примечание
За оператором источников точек следует пробел. Используйте пробел, чтобы отличить точку от символа точки (.
), представляющего текущий каталог.
В следующем примере скрипт Sample.ps1 в текущем каталоге выполняется в текущем область.
. .\sample.ps1
-f
Оператор Format
Форматирует строки с помощью метода форматирования строковых объектов. Введите строку форматирования в левой части оператора и объекты для форматирования в правой части оператора.
"{0} {1,-10} {2:N}" -f 1,"hello",[math]::pi
1 hello 3.14
Дополнительные сведения см. в разделах Метод String.Format и Составное форматирование.
[ ]
Оператор Index
Выбирает объекты из индексированных коллекций, таких как массивы и хэш-таблицы.
Индексы массива отсчитываются от нуля, поэтому первый объект индексируется как [0]
. Для массивов (только) можно также использовать отрицательные индексы для получения последних значений.
Хэш-таблицы индексируются по значению ключа.
PS> $a = 1, 2, 3
PS> $a[0]
1
PS> $a[-1]
3
(Get-HotFix | Sort-Object installedOn)[-1]
$h = @{key="value"; name="PowerShell"; version="2.0"}
$h["name"]
PowerShell
$x = [xml]"<doc><intro>Once upon a time...</intro></doc>"
$x["doc"]
intro
-----
Once upon a time...
|
Оператор конвейера
Отправляет ("каналы") выходные данные команды, которая предшествует команде, которая следует за ней. Если выходные данные содержат несколько объектов (коллекция), оператор конвейера отправляет объекты по одному за раз.
Get-Process | Get-Member
Get-PSSnapin | Where-Object {$_.vendor -ne "Microsoft"}
.
Оператор разыменования свойств
Обращается к свойствам и методам объекта .
$myProcess.peakWorkingSet
(Get-Process PowerShell).kill()
..
Оператор Range
Представляет последовательные целые числа в массиве целых чисел с учетом верхней и нижней границ.
1..10
10..1
foreach ($a in 1..$max) {Write-Host $a}
::
Статический оператор-член
Вызывает оператор статических свойств и методы класса платформа .NET Framework.
Чтобы найти статические свойства и методы объекта, используйте параметр Static командлета Get-Member
.
[datetime]::now
$( )
Оператор Subexpression
Возвращает результат одного или нескольких операторов. Для одного результата возвращает скаляр. Для нескольких результатов возвращает массив.
$($x * 23)
$(Get-WmiObject win32_Directory)