Работа с возвращаемыми данными команды
Применимо к: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007
Последнее изменение раздела: 2006-08-21
В среде управления Exchange предложены несколько методов форматирования возвращаемых данных команды. В этом разделе обсуждаются следующие темы:
Инструкции по форматированию данных. Управление форматированием отображаемых данных с помощью командлетов Format-List, Format-Table иFormat-Wide.
Инструкции по выводу данных. Указание, следует ли выводить данные в окно консоли среды управления Exchange или в файл с помощью командлетов Out-Host и Out-File. В этом разделе также приведен пример сценария для вывода данных в Microsoft Internet Explorer.
Инструкции по фильтрации данных. Выполнение фильтрации данных с помощью одного из следующих методов:
фильтрация на стороне сервера; доступна в некоторых командлетах;
фильтрация на стороне клиента; доступна во всех командлетах путем конвейеризации результатов выполнения команды в командлет Where-Object.
Чтобы использовать функциональные возможности, описанные в этом разделе, необходимо ознакомиться со следующими разделами:
Инструкции по форматированию данных
Если в конце конвейеризации вызываются командлеты форматирования, можно перезаписать форматирование по умолчанию, чтобы управлять составом данных и способом их отображения. Командлетами форматирования являются командлеты Format-List, Format-Table и Format-Wide. У каждого командлета имеется особый стиль вывода, отличающийся от стилей других командлетов форматирования.
Format-List
Командлет Format-List принимает данные конвейера и отображает список с вертикальными столбцами, в который включены все указанные свойства каждого объекта. С помощью параметра Property можно указать, какие свойства следует отображать. Если командлет Format-List был вызван без указанных параметров, возвращаются все свойства. Командлет Format-List переносит строки, а не усекает их. Одно из лучших применений командлета Format-List — это перезапись способа отображения данных по умолчанию, чтобы можно было получить дополнительные или более точные сведения.
Например, при вызове командлета Get-Mailbox будет отображаться только ограниченное количество сведений в виде таблицы. Если направить данные, возвращаемые командлетом Get-Mailbox в командлет Format-List и добавить параметры для отображения дополнительных или более точных сведений, можно увидеть необходимые данные.
Также можно указать подстановочный знак * с частью наименования свойства. Если используется подстановочный знак, можно сравнить различные свойства без необходимости ввода каждого наименования свойства. Например, командлет Get-Mailbox | Format-List -Property Email*
возвратит все свойства, которые начинаются с Email
.
В следующих примерах показаны различные способы просмотра одних и тех же данных, возвращаемых командлетом Get-Mailbox.
Get-MailBox TestUser1
Name Alias Server StorageQuota
---- ----- ------ ------------
TestUser1 TestUser1 e12 unlimited
В первом примере командлет Get-Mailbox вызывается без определенного форматирования, так что возвращаемые данные будут отображаться в виде таблицы и содержать предварительно определенный набор свойств.
Get-Mailbox TestUser1 | Format-List -Property Name,Alias,EmailAddresses
Name : TestUser1
Alias : TestUser1
EmailAddresses : {SMTP:TestUser1@contoso.com, X400:c=US;a= ;p=Contoso;o=Exchange;s=TestUser1;}
Get-Mailbox TestUser1 | Format-List -Property Name, Alias, Email*
Во втором примере, возвращаемые данные командлета Get-Mailbox направляются в командлет Format-List вместе с определенными параметрами. Как видно в этом примере, форматирование и содержимое возвращаемых данных заметно отличается от предыдущего примера.
Name : Test User
Alias : TestUser1
EmailAddresses : {SMTP:TestUser1@contoso.com, X400:c=US;a= ;p=First
Organization;o=Exchange;s=User;g=Test;}
EmailAddressPolicyEnabled : True
В последнем примере, возвращаемые командлетом Get-Mailbox данные направляются в командлет Format-List, как и во втором примере. Однако в последнем примере подстановочный знак используется для нахождения всех свойств, которые начинаются с Email
.
Если в командлет Format-List передается более одного объекта, отображаются все указанные для объектов свойства, сгруппированные по объектам. Порядок отображения зависит от параметра командлета по умолчанию. Наиболее часто это параметр Name или параметр Identity. Например, если вызывается командлет Get-Childitem, порядком отображения по умолчанию будет являться список имен файлов в алфавитном порядке. Чтобы изменить такое поведение, необходимо вызвать командлет Format-List, указав параметр GroupBy и имя значения свойства, по которому следует сгруппировать возвращаемые данные. Например, с помощью следующей команды можно отобразить список всех файлов в каталоге и сгруппировать их по расширениям.
Get-Childitem | Format-List Name,Length -GroupBy Extension
Extension: .xml
Name : Config_01.xml
Length : 5627
Name : Config_02.xml
Length : 3901
Extension: .bmp
Name : Image_01.bmp
Length : 746550
Name : Image_02.bmp
Length : 746550
Extension: .txt
Name : Text_01.txt
Length : 16822
Name : Text_02.txt
Length : 9835
В этом примере командлет Format-List группирует элементы по свойству Extension, которое указано в параметре GroupBy. В потоке конвейеризации можно использовать параметр GroupBy с любым допустимым свойством объектов.
Format-Table
Командлет Format-Table позволяет отображать элементы в виде таблицы с заголовками и столбцами данных свойств. По умолчанию многие командлеты, например: Get-Process и Get-Service, используют вид таблицы для отображения возвращаемых данных. Параметры командлета Format-Table содержат параметры Properties и GroupBy. Эти параметры работают так же, как и подобные параметры в командлете Format-List.
В командлете Format-Table также используется параметр Wrap. Этот параметр способствует полному отображению свойств, вместо усечения каждого конца строки. Чтобы посмотреть, как отображаются возвращаемые данные, обработанные с помощью параметра Wrap, сравните возвращаемые командой Get-Command данные в следующих двух примерах.
В первом примере командлет Get-Command используется для отображения командных сведений о командлете Get-Process; данные свойства Definition усекаются.
Get-Command Get-Process | Format-Table Name,Definition
Name Definition
---- ----------
get-process get-process [[-ProcessName] String[]...
Во втором примере в команду добавляется параметр Wrap для принудительного отображения всего содержимого свойства Definition.
Get-Command Get-Process | Format-Table Name,Definition -Wrap
Name Definition
---- ----------
get-process get-process [[-ProcessName] String[]] [
-Verbose] [-Debug] [-ErrorAction Action
Preference] [-ErrorVariable String] [-O
utVariable String] [-OutBuffer Int32]
get-process -Id Int32[] [-Verbose] [-De
bug] [-ErrorAction ActionPreference] [-
ErrorVariable String] [-OutVariable Str
ing] [-OutBuffer Int32]
get-process -Input Process[] [-Verbose]
[-Debug] [-ErrorAction ActionPreferenc
e] [-ErrorVariable String] [-OutVariabl
e String] [-OutBuffer Int32]
Как и в командлете Format-List, можно указать подстановочный знак *
с частью наименования свойства. Если используется подстановочный знак, можно сравнить различные свойства без необходимости ввода каждого наименования свойства.
Format-Wide
С помощью командлета Format-Wide обеспечивается более простое управление отображением данных по сравнению с другими командлетами форматирования. По умолчанию командлет Format-Wide пытается отобразить по возможности как можно большее количество значений свойств в строке. С помощью добавляемых параметров можно управлять количеством столбцов и использованием пространства отображаемых данных.
Наиболее простое использование — это вызов командлета Format-Wide без параметров, что приведет к отображению такого количества столбцов, какое сможет уместиться на странице. Например, если выполняется командлет Get-Childitem и его данные направляются в командлет Format-Wide, будет отображено следующее:
Get-ChildItem | Format-Wide
Directory: FileSystem::C:\WorkingFolder
Config_01.xml Config_02.xml
Config_03.xml Config_04.xml
Config_05.xml Config_06.xml
Config_07.xml Config_08.xml
Config_09.xml Image_01.bmp
Image_02.bmp Image_03.bmp
Image_04.bmp Image_05.bmp
Image_06.bmp Text_01.txt
Text_02.txt Text_03.txt
Text_04.txt Text_05.txt
Text_06.txt Text_07.txt
Text_08.txt Text_09.txt
Text_10.txt Text_11.txt
Text_12.txt
Как правило, вызов командлета Get-Childitem без параметров приведет к отображению имен всех файлов в каталоге в таблице свойств. В этом примере возвращаемые данные, направленные из командлета Get-Childitem в командлет Format-Wide, были отображены в двух столбцах с именами. Заметьте, что единовременно может быть отображен только один тип свойств, указанный именем свойства, которое следует за командлетом Format-Wide. Если добавить параметр Autosize, отображение данных изменится с двух столбцов на количество, которое может уместиться по ширине экрана.
Get-ChildItem | Format-Wide -AutoSize
Directory: FileSystem::C:\WorkingFolder
Config_01.xml Config_02.xml Config_03.xml Config_04.xml Config_05.xml
Config_06.xml Config_07.xml Config_08.xml Config_09.xml Image_01.bmp
Image_02.bmp Image_03.bmp Image_04.bmp Image_05.bmp Image_06.bmp
Text_01.txt Text_02.txt Text_03.txt Text_04.txt Text_05.txt
Text_06.txt Text_07.txt Text_08.txt Text_09.txt Text_10.txt
Text_11.txt Text_12.txt
В этом примере таблица разбита на пять столбцов вместо двух. С помощью параметра Column можно достичь более точного управления путем определения максимального количества столбцов для отображения данных, например:
Get-ChildItem | Format-Wide -Columns 4
Directory: FileSystem::C:\WorkingFolder
Config_01.xml Config_02.xml Config_03.xml Config_04.xml
Config_05.xml Config_06.xml Config_07.xml Config_08.xml
Config_09.xml Image_01.bmp Image_02.bmp Image_03.bmp
Image_04.bmp Image_05.bmp Image_06.bmp Text_01.txt
Text_02.txt Text_03.txt Text_04.txt Text_05.txt
Text_06.txt Text_07.txt Text_08.txt Text_09.txt
Text_10.txt Text_11.txt Text_12.txt
В этом примере с помощью параметра Column было принудительно задано количество столбцов, равное четырем.
Инструкции по отображению данных
Командлеты Out-Host и Out-File
Командлет Out-Host является скрытым командлетом по умолчанию, используемым в конце конвейеризации. После применения форматирования командлет Out-Host посылает последние возвращаемые данные в окно консоли для их отображения. Нет необходимости явно вызывать командлет Out-Host, так как это делается по умолчанию. Можно отменить передачу данных в окно консоли с помощью командлета Out-Host, поставив его последним командлетом в команде. Затем командлет Out-File записывает возвращаемые данные в файл, который указывается пользователем в команде, как показано в следующем примере:
Get-ChildItem | Format-Wide -Columns 4 | Out-File c:\OutputFile.txt
В этом примере командлет Out-Host записывает данные, отображенные в команде Get-ChildItem | Format-Wide -Columns 4, в файл с именем OutputFile.txt
. Также можно перенаправить возвращаемые данные в файл с помощью оператора перенаправления — правой угловой скобки ( >
). Чтобы прикрепить возвращаемые командой данные к существующему файлу без замены исходного файла, используйте двойные правые угловые скобки ( >>
), как показано в следующем примере.
Get-ChildItem | Format-Wide -Columns 4 >> C:\OutputFile.txt
В этом примере выходные данные командлета Get-Childitem направляются на вход команды Format-Wide для форматирования, а затем записываются в файл OutputFile.txt
. Заметьте, что если файл OutputFile.txt
не существует, использование двойных правых угловых скобок ( >>
) приведет к созданию файла.
Дополнительные сведения о конвейеризации см. в разделе Конвейеризация.
Дополнительные сведения о синтаксисе, использованном в предыдущих примерах, см. в разделе Синтаксис.
Просмотр данных в обозревателе Internet Explorer
Вследствие гибкости и простоты создания сценариев в среде управления Exchange, можно форматировать данные, возвращаемые командами, и отображать их все различными способами.
В следующем примере показано, как можно использовать простой сценарий для обработки данных, возвращаемых командой, и отображения их в обозревателе Internet Explorer. В этом сценарии используются объекты, прошедшие конвейеризацию, открывается окно обозревателя Internet Explorer, а затем в Internet Explorer отображаются данные:
$Ie = New-Object -Com InternetExplorer.Application
$Ie.Navigate("about:blank")
While ($Ie.Busy) { Sleep 1 }
$Ie.Visible = $True
$Ie.Document.Write("$Input")
# If the previous line doesn't work on your system, uncomment the line below.
# $Ie.Document.IHtmlDocument2_Write(\"$Input\")
$Ie
Чтобы использовать этот сценарий, сохраните его в каталоге C:\Program Files\Microsoft\Exchange Server\Scripts
на компьютере, где следует выполнить этот сценарий. Назовите этот файл Out-Ie.ps1
. После сохранения файла можно использовать этот сценарий как обычный командлет.
Условием использования сценария Out-Ie
является получение данных в допустимом формате HTML. Чтобы преобразовать просматриваемые данные в формат HTML, необходимо направить результаты выполнения команды в командлет ConvertTo-Html. Затем можно передать результаты этой команды в сценарий Out-Ie
. В следующем примере показано, как просматривать список каталогов в окне обозревателя Internet Explorer:
Get-ChildItem | Select Name,Length | ConvertTo-Html | Out-Ie
Инструкции по фильтрации данных
Среда управления Exchange предоставляет доступ к большому количеству сведений о серверах, почтовых ящиках, службе каталогов Active Directory и другим объектам организации. Несмотря на то, что доступ к этим сведений способствует лучшему представлению о среде, эти большие объемы сведений могут запутать пользователя. С помощью среды управления Exchange можно управлять этими сведениями и просматривать только необходимые данные с помощью фильтров. Доступны следующие два типа фильтрации:
Фильтрация на стороне сервера. Использование этой фильтрации заключается в том, что можно указать фильтр в командной строке и передать его на опрашиваемый сервер Exchange. Сервер обрабатывает запрос и возвращает только те данные, которые соответствуют указанному фильтру.
Фильтрация на стороне сервера выполняется только с теми объектами, которые могут вернуть сотни или тысячи результатов. Поэтому только командлеты управления получателями (например, командлет Get-Mailbox) и командлеты управления очередями (например, командлет Get-Queue) поддерживают фильтрацию на стороне сервера. Эти командлеты поддерживают параметр Filter. Он использует указанное выражение фильтра и передает его на сервер для обработки.
Фильтрация на стороне клиента. Эта фильтрация выполняется с объектами в локальном окне работающей консоли. При использовании этой фильтрации командлет получает в локальном окне консоли все объекты, которые соответствуют выполняемой задаче. Затем среда управления Exchange использует все возвращенные результаты, применяет к этим результатам фильтр и возвращают только те результаты, которые соответствуют фильтру. Фильтрацию на стороне клиента поддерживают все командлеты. Эту фильтрацию можно использовать, направив результаты команды в командлет Where-Object.
Фильтрация на стороне сервера
Использование фильтрации на стороне сервера для каждого поддерживающего ее командлета является особенным. Фильтрация на стороне сервера включена только для особых свойств возвращенных объектов.
Дополнительные сведения об управлении получателями с помощью фильтрации на стороне сервера см. в разделе Создание фильтров в командах получателя.
Дополнительные сведения об управлении очередями с помощью фильтрации на стороне сервера см. в разделе Фильтрация очередей.
Фильтрация на стороне клиента
Фильтрация на стороне клиента может использоваться с любым командлетом. Это включает и те командлеты, которые поддерживают фильтрацию на стороне сервера. Как было описано выше, в фильтрации на стороне клиента можно использовать все данные, возвращенные предыдущей командой в процессе конвейеризации. В свою очередь, эта фильтрация возвращает результаты, которые совпадают с указанным фильтром. Эта фильтрация выполняется командлетом Where-Object. В сокращенной форме он выглядит как Where.
В процессе конвейеризации командлет Where получает данные от предыдущего объекта, затем фильтрует данные перед направлением их к следующему объекту. Фильтрация основана на блоке сценария, который определен в команде Where. Этот блок сценария фильтрует данные, основываясь на свойствах и значениях объектов.
Командлет Clear-Host используется для очистки окна консоли. В этом примере можно найти все определенные псевдонимы для командлета Clear-Host, если будет выполнена следующая команда:
Get-Alias | Where {$_.Definition -eq "Clear-Host"}
CommandType Name Definition
----------- ---- ----------
Alias clear clear-host
Alias cls clear-host
Командлет Get-Alias и команда Where взаимодействуют, чтобы возвратить список псевдонимов, которые были определены исключительно для командлета Clear-Host. В таблице 1 показан каждый элемент команды Where, который использовался в этом примере.
Таблица 1. Элементы команды Where
Элемент | Описание |
---|---|
{ } |
Фигурные скобки ограничивают блок сценария, в котором определен фильтр. |
$_ |
С помощью этой специальной переменной можно автоматически инициировать и привязать объекты в конвейере. |
Определение |
Свойство |
-eq |
Этот оператор сравнения используется для указания на то, что результат должен точно соответствовать значению свойства, предоставленному в выражении. |
“Clear-Host” |
В этом примере “Clear-Host” является значением анализа команды. |
В этом примере объекты, возвращенные командлетом Get-Alias, представляют все определенные псевдонимы в системе. Даже если их не будет видно из командной строки, псевдонимы собираются и передаются в командлет Where по конвейеру. Командлет Where использует сведения в блоке сценария для применения фильтра к объектам псевдонимов.
Специальная переменная $
_ представляет передаваемые объекты. Переменная $_
автоматически инициализируется средой и привязывается к текущему объекту конвейера. Дополнительные сведения об этой специальной переменной см. в разделе Переменные среды.
С помощью стандартного формата с точкой (объект.свойство) добавляется свойство Definition
для определения точного свойства оцениваемого объекта. Затем с помощью оператора сравнения -eq
сопоставляется значение этого свойства с "Clear-Host"
. Для отображения в окне консоли передаются только те объекты, которые имеют свойство Definition
, соответствующее указанному критерию. Дополнительные сведения об операторах сравнения единой системы обмена сообщениями см. в разделе Операторы сравнения.