Поделиться через


Синтаксис командлетов 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"} что и Get-Alias | ? {$_.Definition -eq "Clear-Host"}.|