Синтаксис командлетов Exchange

В справочных статьях по командлетам Exchange используется стандартизированный метод, описывающий ключевые аспекты командлета. Например:

  • Параметры, доступные в командлете .
  • Значения, которые принимает каждый параметр.
  • Параметры, которые можно использовать вместе, и параметры, которые необходимо использовать отдельно.

В этой статье описаны эти соглашения, а также синтаксис, необходимый для выполнения команд в Exchange PowerShell.

Соглашения о командах в Exchange PowerShell

Справка по Exchange PowerShell следует соглашениям, указывающим обязательные и необязательные параметры, а также способы ввода параметров и значений при выполнении команды. Эти соглашения о командах перечислены в представленной ниже таблице.

Символ Описание
- Дефис обозначает параметр. Например, -Identity.
< > Угловые скобки обозначают допустимые значения параметра. Например, -Location <ServerName> или -Enabled <$true | $false>.
[ ] Квадратные скобки обозначают необязательные параметры и их значения. Например, [-WhatIf] или [-ResultSize <Unlimited>].

Пары "параметр-значение", не заключенные в квадратные скобки, являются обязательными. Например, -Password <SecureString>.

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

Например, означает, Get-Mailbox [[-Identity] <MailboxIdParameter>] что параметр Identity является позициональным (так как он заключен в квадратные скобки) и необязательным (так как вся пара "параметр—значение" заключена в квадратные скобки), поэтому можно использовать Get-Mailbox -Identity <MailboxIdParameter> или Get-Mailbox <MailboxIdParameter>. Аналогичным образом означает, Set-Mailbox [-Identity] <MailboxIdParameter> что параметр Identity является позициональным (так как он заключен в квадратные скобки) и является обязательным (поскольку вся пара "параметр-значение" не заключена в квадратные скобки), поэтому можно использовать Set-Mailbox -Identity <MailboxIdParameter> или Set-Mailbox <MailboxIdParameter>.
| Вертикальная черта в значениях параметров указывает на возможность выбора между значениями. Например, параметр -Enabled <$true | $false> указывает, что параметр Enabled может иметь значение $true или $false.

Эти соглашения о командах помогут вам понять структуру команды. За исключением дефиса, указывающего параметр, эти символы не используются, как описано в таблице при выполнении командлетов в Exchange PowerShell.

Наборы параметров в Exchange PowerShell

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

Многие командлеты имеют только один набор параметров, что означает, что все параметры могут использоваться друг с другом. Другие командлеты имеют несколько наборов параметров, что означает, что некоторые параметры нельзя использовать с другими параметрами. Например, предположим, что в командлете New-SystemMessage доступны следующие наборы параметров:

New-SystemMessage -DsnCode <EnhancedStatusCode> -Internal <Boolean> -Language <CultureInfo> -Text <String> [-Confirm] [-DomainController <Fqdn>] [-WhatIf] <CommonParameters>

New-SystemMessage -QuotaMessageType <QuotaMessageType> -Language <CultureInfo> -Text <String> [-Confirm] [-DomainController <Fqdn>] [-WhatIf] <CommonParameters>

Следующие параметры доступны в первом наборе параметров, поэтому их можно использовать в той же команде:

  • DsnCode
  • Внутренняя
  • Language
  • Текст
  • Подтвердить
  • Domaincontroller
  • Whatif

Во втором наборе параметров доступны следующие параметры, поэтому их можно использовать в той же команде:

  • QuotaMessageType
  • Language
  • Текст
  • Подтвердить
  • Domaincontroller
  • Whatif

Параметры DsnCode и Internal доступны только в первом наборе параметров. Параметр QuotaMessageType доступен только во втором наборе параметров. Таким образом, вы не можете использовать следующие параметры в той же команде:

  • DsnCode и QuotaMessageType.
  • Internal и QuotaMessageType.

Следующие параметры доступны в обоих наборах параметров, поэтому их можно использовать в любой команде New-SystemMessage :

  • Language
  • Текст
  • Подтвердить
  • Domaincontroller
  • Whatif

Запись <CommonParameters> указывает, что командлет поддерживает базовые Windows PowerShell параметры, доступные практически в любом командлете (например, Verbose). Общие параметры можно использовать с параметрами из любого набора параметров. Дополнительные сведения см. в статье about_CommonParameters.

Кавычки в Exchange PowerShell

В Exchange PowerShell можно заключать значения параметров, содержащие пробелы, в одиночные ( ' ) или двойные ( " ) кавычки. Например, следующие команды работают одинаковым образом:

  • Get-ReceiveConnector -Identity "Contoso Receive Connector"

  • Get-ReceiveConnector -Identity 'Contoso Receive Connector'

В предыдущих примерах, если значение не заключено в одиночные или двойные кавычки, команда завершается ошибкой, так как PowerShell обрабатывает каждое слово как новый аргумент (считается Contoso значением параметра Identity , а Receive значением неуказанным позициональным параметром). В этом примере ошибка выглядит следующим образом:

Не удается найти позиционный параметр, принимаюющий аргумент "Receive"

Для значений обычного текста одинарные кавычки и двойные кавычки на самом деле не имеют значения. Но выбор имеет важное значение, когда речь идет о переменных:

  • Двойные кавычки: переменные заменяются фактическими значениями.
  • Одинарные кавычки: переменные обрабатываются буквально.

Например, в зависимости от того, $Server = Mailbox01 какие кавычки вы используете, выводятся следующие выходные данные:

  • "пример $Server" приводит к Mailbox01 Example.
  • "пример $Server" приводит к $Server Example.

Дополнительные сведения о переменных см. в разделе about_Variables и about_Automatic_Variables.

Escape-символы в Exchange PowerShell

В любом языке программирования escape-символ используется, чтобы специальные символы трактовались буквально, а не по их обычной функции в этом языке. В Exchange PowerShell, когда вы заключаете текстовую строку в двойные кавычки, escape-символ является escape-символом обратной кавычки ( ' ).

Например, если требуется вывод The price is $23, введите значение "Цена " $ 23". Escape-символ требуется для символа доллара ( $ ), так как $ определяет переменные в PowerShell.

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

Например, если вам нужны выходные данные Don't confuse two single quotation marks with a double quotation mark!, введите значение "Не путайте две одинарные кавычки с двойной кавычками!".

Операторы команд в Exchange PowerShell

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

Оператор Описание
= Знак равенства является символом назначения. Значение в правой части знака равенства присваивается переменной слева от знака равенства (например, $x= Get-Mailbox). Вы также можете использовать другие символы со знаком равенства:
  • +=: добавьте значение справа от знака равенства к текущему значению, которое содержится в переменной слева от знака равенства.
  • -=: вычитает значение справа от знака равенства из текущего значения, содержащегося в переменной слева от знака равенства.
  • *=: умножьте текущее значение переменной слева от знака равенства на значение, указанное в правой части знака равенства.
  • /=: разделите текущее значение переменной слева от знака равенства на значение, указанное в правой части знака равенства.
  • %=: измените текущее значение переменной слева от знака равенства на значение, указанное справа от знака равенства.
: Используйте двоеточие, чтобы отделить имя параметра от значения параметра. Например, -Enabled:$True. Разделитель двоеточий работает и является необязательным практически для всех пар параметров и значений. Для параметров переключателя требуется разделитель двоеточия. Дополнительные сведения о параметрах переключения см. в разделе about_Parameters.
! Восклицательный знак является логическим оператором NOT. Объединенная пара != означает "не равно".
[ ] Квадратные скобки указывают значение индекса позиции массива. Значения индекса — это смещения, которые всегда начинаются с нуля. Например, в массиве с именем $Redзначением десятой позиции в массиве является $Red[9].

Квадратные скобки также могут присваивать тип переменной. Например, чтобы определить переменную с именем $A XML, используйте $A=[XML] "<Test><A>value</A></Test>". Доступны следующие типы переменных: Array, , Bool, ByteChar, Char[], Decimal, Double, FloatIntInt[], Long, Long[], , RegEx, Single, ScriptBlock, , StringType, иXML.
{ } Используйте фигурные скобки, чтобы включить выражение в команду. Пример: Get-Process | Where {$_.HandleCount -gt 400}
| Используйте символ конвейера для передачи выходных данных одной команды в другую команду. Например, Get-Mailbox -Server SRV1 | Set-Mailbox -ProhibitSendQuota 2GB.
> Используйте правоугольную скобку для отправки выходных данных команды в файл. Если файл уже существует, содержимое перезаписывается. Например, Get-TransportRule > "C:\My Documents\TransportRules.txt".
>> Используйте двойные угловые скобки, чтобы добавить выходные данные команды в существующий файл. Если указанный файл не существует, создается новый. Например, Get-TransportRule >> "C:\My Documents\TransportRules.txt".
" Используйте двойные кавычки для заключения текстовых строк, содержащих пробелы. Как описано ранее, переменные заменяются фактическими значениями.
$ Знак доллара указывает на переменную. Например, чтобы создать переменную $Blue со значением 10, используйте $Blue = 10. После сохранения переменной ее можно использовать в качестве значения параметра.
@ Символ at ссылается на ассоциативный массив. Дополнительные сведения см. в разделе about_Arrays.
$( ) Знак доллара с круглыми скобками указывает на подстановку команды. Подстановка команды применяется, если выходные данные одной команды нужно использовать в качестве аргумента другой. Например, Get-ChildItem $(Read-Host -Prompt "Enter FileName: ").
.. Две точки обозначают диапазон значений. Например, если массив содержит несколько индексов, можно вернуть значения всех индексов между вторым и пятым индексами, выполнив команду : $Blue[2..5].
+ Оператор знака "плюс" добавляет два значения вместе. Например, выражение 6 + 6 равно 12.
- Оператор знака "минус" вычитает одно значение из другого значения (например, 12 - 6 равно 6) или указывает отрицательное число (например, -6 * 6 равно -36).
* Звездочка можно использовать для:
  • Совпадение строк: например, Get-User | Where-Object {$_.Department -like 'Sales*'})
  • Умножение числовых значений: например, 6 * 6 равно 36
  • Повторите строковое значение заданное число раз: например, "Test" * 3 равно TestTestTest
/ Косая черта делит одно значение на другое. Например, выражение 6 / 6 равно 1.
% Знак процента используется следующим образом:
  • При числовом вычислении он возвращает остаток от оператора деления. Например, выражение 6 % 4 равно 2.
  • В конвейере это сокращение для командлета ForEach-Object . Например, выражение Import-Csv C:\MyFile.csv | ForEach-Object {Set-Mailbox $_.Identity -Name $_.Name} is the same as Import-Csv C:\MyFile.csv | % {Set-Mailbox $_.Identity -Name $_.Name}.
? Знак вопроса является сокращенным для командлета Where-Object . Например, выражение Get-Alias | Where-Object {$_.Definition -eq "Clear-Host"} is the same as Get-Alias | ? {$_.Definition -eq "Clear-Host"}.