Советы дня по командной консоли Exchange

 

Применимо к: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Последнее изменение раздела: 2007-08-24

В этом разделе перечислены все ежедневные советы по командной консоли Exchange, а также относящиеся к ним справочные разделы Microsoft Exchange Server 2007 и другая документация корпорации Майкрософт. Ежедневные советы появляются на экране каждый раз, когда вы открываете командную консоль Exchange

Для просмотра ежедневных советов по требованию откройте командную консоль Exchange и запустите командлет Get-Tip .

Совет Смежные темы

Знаете ли вы, что параметр Identity является "позиционным параметром"? Это означает, что можно использовать:

Get-Mailbox "domain\user" вместо: Get-Mailbox -Identity "domain\user"

Это изящный прием!

Чтобы получить все сценарии, находящиеся по указанному пути, введите:

Get-Command -Type ExternalScript

И в качестве полезного приема назначьте его в своем профиле как:

Function Get-Scripts { Get-Command -Type ExternalScript }

Приходится вводить длинную команду всякий раз, когда нужно что-то сделать? Создайте псевдоним! Введите:

Set-Alias GetSg Get-StorageGroup

Чтобы посмотреть все существующие псевдонимы, введите:

Get-Alias

Необходимо экспортировать данные почтового ящика в файл PST? Воспользуйтесь командлетом Export-Mailbox. Можно экспортировать несколько почтовых ящиков при помощи одной команды. Введите:

Get-Mailbox | Export-Mailbox -PSTFolderPath <path to folder where data will be exported>

Кроме того, можно импортировать файлы PST в почтовые ящики при помощи командлета Import-Mailbox. Введите:

Get-Mailbox | Import-Mailbox -PSTFolderPath <path to folder with <alias>.pst files to import>

Необходимо увидеть членов динамической группы распространения, у которой есть пользовательский фильтр? Просто используйте командлет Get-Recipient . Введите:

$DDG = Get-DynamicDistributionGroup "Contoso Marketing Managers"

Get-Recipient -RecipientPreviewFilter $DDG.RecipientFilter

Командная консоль Exchange также является и калькулятором! Опробуйте его прямо в командной строке:

1.2343+3123 or (23/435)*2

 

Служба 01 в командной строке! Нужна справка? Введите:

Help <cmdlet-name> or <cmdlet-name> -?

Можно также выполнить поиск с использованием подстановочных знаков и найти частичные соответствия имен:

Help *UM*

Чтобы получить дополнительные подробности о командлете, введите:

Get-Command <cmdlet-name>

Быстро узнать все параметры командлета можно следующим способом:

Get-Command <cmdlet-name> | Format-List Definition

или сокращенно:

Gcm <cmdlet-name> | Fl Def*

Символ тильды () должен быть знаком пользователям Unix. Он является обозначением корневого каталога пользователя. Чтобы узнать его значение по умолчанию, введите:

Dir ~

Использование этого знака может быть полезным приемом:

Cp SomeFile "~\My Documents"

Нужно переместить почтовые ящики? Введите:

Move-Mailbox

Переместить всех пользователей с сервера SRV1 на сервер SRV2 можно следующим образом:

Get-Mailbox -Server SRV1 | Move-Mailbox -TargetDatabase SRV2

Сочетание клавиш CTRL+C эквивалентно команде прерывания в командной консоли Exchange. Если команда выполняется слишком долго, или если нужно быстро отменить операцию, нажмите сочетание клавиш CTRL+C, чтобы остановить выполнение.

 

Команды Pushd и Popd работают в командной консоли Exchange так же, как и в окне cmd.exe. Введите:

Pushd <location>

  • Pushd (на английском языке)

  • Popd (на английском языке)

XML превыше всего! В командной консоли Exchange XML рассматривается в качестве основного языка, что позволяет делать интересные вещи, например:

$Sample = [XML](Get-Content SomeXMLFile.xml)

Эта команда присваивает $Sample реальному объекту XML. Чтобы увидеть это, введите:

$Sample

Для перемещения по нему введите:

$Sample.Prop1.Prop2

Не требуется выполнять разбор текста, если нужно загрузить данные XML!

Командлеты, заканчивающиеся на «Config», управляют настройкой, относящейся к единственному экземпляру на сервере или в организации. Для этих задач не нужно указывать параметр Identity, так как существует только один экземпляр настройки. Может понадобиться указать параметр Server, если настройка производится для каждого сервера отдельно.

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

Get-UmMailbox | ForEach { If($_.UmEnabled -Eq $False){$_.Name}}

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

Get-UmMailbox | ForEach { If($_.UmEnabled -Eq $True){$_.Name}}

Чтобы вывести в таблице псевдоним пользователя вместе с именем сервера Exchange 2007 и добавочным телефонным номером пользователя, введите:

Get-UmMailbox | Format-Table ServerName,@{e={$_.SamAccountName};Label="User Alias"},@{Expression="Extensions";Label="Telephone numbers"}

Чтобы вывести список имен серверов шлюзов IP единой системы обмена сообщениями, недоступных для исходящих вызовов и групп слежения, связанных с сервером шлюза IP единой системы обмена сообщениями, используйте:

Get-UMIPGateway | ForEach {If($_.OutCallsAllowed -Eq $False){ "Gateway Name = " +$_.Name;ForEach ($HuntGroup In $_.Huntgroups){"Huntgroups " + $Huntgroup}}}

Если нужно проверить всех поставщиков списков заблокированных IP-адресов, требуется только направить вывод командлетаGet-IpBlockListProvider на вход командлета Test-IpBlockListProvider:

Get-IpBlockListProvider | Test-IpBlockListProvider -IpAddress 192.168.0.1

Перед удалением объекта с помощью глагола Remove используйте параметр WhatIf, чтобы проверить соответствует ли результат ожидаемому.

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

Get-Command | Out-String | Findstr "command"

Получите все данные WMI Win32, например счетчики системного монитора и настройки локального компьютера. Например, введите:

Get-WMIObject Win32_PerfRawData_PerfOS_Memory

Много нежелательной почты? У кого ее нет? Можно, выполнив две следующие команды, настроить поставщики списков блокировки в реальном времени в командной консоли Exchange:

Set-IPBlockListProvidersConfig -Enabled $True -ExternalMailEnabled $True

а затем

Add-IPBlockListProvider -Name <Name of RBL Provider> -LookupDomain <FQDN of RBL Provider> -AnyMatch $True

Доступ к журналу событий из командной консоли Exchange. Чтобы получить весь журнал событий, выполните:

Get-EventLog Application | Format-List

Чтобы получить все события, связанные с Exchange, выполните:

Get-EventLog Application | Where { $_.Source -Ilike "*Exchange*" }

Одним из преимуществ командной консоли Exchange является возможность командлетов выдавать объекты на консоль. Затем можно обрабатывать этот вывод и организовывать его нужным образом. Например, чтобы быстро получить вывод в табличном формате, используйте Format-Table:

Get-Mailbox | Format-Table Name,Database,RulesQuota

Забыли имя свойства? Не беда, можно использовать подстановочные знаки, чтобы получить все свойства, часть имени которых соответствует заданному шаблону:

Get-Mailbox | Format-Table Name,*SMTP*

Нужно работать с данными, содержащимися в файле формата CSV? Чтобы присвоить данные объекту, используйте Import-CSV. Например, введите:

$MyCSV = Import-CSV TestFile.CSV

Затем с данными можно легко работать в командной консоли Exchange. Например, если столбец в данных формата CSV называется Mailboxes, для сортировки или группировки данных по столбцу Mailboxes можно использовать следующие команды:

Для сортировки: $MyCSV | Sort Mailboxes

Для группировки: $MyCSV | Group Mailboxes

Эта команда просматривает все серверы почтовых ящиков и повторно подключает все уникально идентифицированные, но отсоединенные почтовые ящики в любом из хранилищ почтовых ящиков:

Get-ExchangeServer | `

Where { $_.IsMailboxServer -Eq '$True' } `

| ForEach { Get-MailboxStatistics -Server $_.Name `

| Where { $_.DisconnectDate -NotLike '' } `

| ForEach { Connect-Mailbox -Identity `

$_.DisplayName -Database $_.DatabaseName} }

Завершение с помощью клавиши TAB уменьшает количество нажатий клавиш, требуемое для завершения ввода названия командлета. Чтобы закончить ввод названия командлета, просто нажмите клавишу TAB. Завершение с помощью клавиши TAB активизируется, когда во вводе присутствует дефис (-). Например:

Get-Send<tab>

должно завершиться так, чтобы получилось Get-SendConnector. Можно использовать даже регулярные выражения, например:

Get-U*P*<tab>

При нажатии клавиши TAB при вводе команды выполняется циклический перебор все командлетов, соответствующих данному выражению, например командлетов политики почтовых ящиков единой системы обмена сообщениями.

Нужно создать в своей лаборатории группу пользователей для тестирования? Воспользуйтесь следующей командой:

1..100 | ForEach { Net User "User$_" MyPassword=01 /ADD /Domain; Enable-Mailbox "User$_" -Database <MailboxDatabaseName> }

Нужно изменить параметры проверки подлинности в виртуальном каталоге веб-клиента Outlook Web Access? В качестве примера попробуйте следующую команду. Она изменяет проверку подлинности с проверки подлинности на основе форм на проверку подлинности Windows:

Set-OwaVirtualDirectory -Identity "OWA (Default Web Site)" -FormsAuthentication 0 -WindowsAuthentication 1

Нужно настроить свойства всех или некоторых виртуальных каталогов веб-клиента Outlook Web Access? Перенаправьте вывод командлета Get-OwaVirtualDirectory на вход командлета Set-OwaVirtualDirectory. Например, следующая команда устанавливает уровень Gzip для всех виртуальных каталогов веб-клиента Outlook Web Access:

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -GzipLevel High

Нужно удалить устройство ActiveSync из списка устройств пользователя? Введите:

Remove-ActiveSyncDevice

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

Нужно очистить все данные из мобильного устройства? Используйте:

Clear-ActiveSyncDevice

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

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

Get-ActiveSyncDeviceStatistics

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

Один из пользователей попросил восстановить его пароль синхронизации для мобильного устройства? Чтобы получить пароль пользователя, введите:

Get-ActiveSyncDeviceStatistics -ShowRecoveryPassword

Нужно изменить путь к группе хранения? Введите:

Move-StorageGroupPath -LogFolderPath DestLogFolder

Чтобы изменить только настройку пути без перемещения данных, используйте эту команду вместе с параметром ConfigurationOnly. Эта команда особенно полезна для аварийного восстановления.

CautionВнимание!
Неправильное использование этого командлета приведет к потере данных.

Нужно изменить путь к базе данных? Введите:

Move-DatabasePath -EdbFilePath DestFileName

Чтобы изменить только настройку пути файла без перемещения данных, используйте эту команду вместе с параметром ConfigurationOnly. Эта команда особенно полезна для аварийного восстановления.

CautionВнимание!
Неправильное использование этого командлета приведет к потере данных.

Чтобы установить ограничения набора номера для конкретной абонентской группы единой системы обмена сообщениями, введите:

$Dp = Get-UmDialPlan -Identity <Your_DialPlan_Identity>

$Dp.ConfiguredInCountryGroups.Add("Group1,91xxxxxxxxxx,91xxxxxxxxxx")

$Dp.ConfiguredInCountryGroups.Add("Group1,9xxxxxxxxxx,91xxxxxxxxxx")

$Dp.ConfiguredInCountryGroups.Add("Group1,9xxxxxxx,9xxxxxxx")

$Dp.AllowedInCountryGroups.Add("Group1")

$Dp.OutsideLineAccessCode = 9

$Dp | Set-UmDialPlan

Нужен простой способ добавить новый основной адрес SMTP в группу почтовых ящиков? Следующая команда создает новую политику адресов электронной почты, которая назначает домен @contoso.com основному адресу SMTP всех почтовых ящиков с Contoso в поле компании:

New-EmailAddressPolicy -Name Contoso -RecipientFilter {Company -Eq "Contoso"} -EnabledPrimarySMTPAddressTemplate "@contoso.com"

Нужно получить группу объектов с похожими идентификаторами? Чтобы найти несколько соответствующих объектов, в параметре Identity можно использовать подстановочные знаки. Введите:

Get-Mailbox *John*

Get-ReceiveConnector *toso.com

Get-JournalRule *discovery*

Нужно настроить группу объектов с похожими идентификаторами? При использовании командлета Get в параметре Identity можно применить подстановочные знаки, а также можно направить вывод в командлет Set. Введите:

Get-Mailbox *John* | Set-Mailbox -ProhibitSendQuota 100MB

Эта команда находит все почтовые ящики, идентификаторы которых содержат имя «John», и устанавливает для параметра ProhibitSendQuota значение 100MB.

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

Get-MailboxDatabase "Executives" | Get-Mailbox | Set-Mailbox -ProhibitSendQuota 300MB

Эта команда возвращает все почтовые ящики, находящиеся в базе данных почтовых ящиков «Executives», и устанавливает для них значение ProhibitSendQuota равным 300MB.

Не помните, какие параметры доступны для командлета? Воспользуйтесь завершением с помощью клавиши TAB! Введите:

Set-Mailbox -<tab>

Ввод дефиса (-) с последующим нажатием клавиши TAB позволяет циклически перебрать все доступные параметры командлета. Нужно сузить поиск? Введите часть имени параметра и нажмите клавишу Tab. Введите:

Set-Mailbox -Prohibit<tab>

Попрощайтесь с командой ping. Поприветствуйте Test-MapiConnectivity! Используйте Test-MapiConnectivity для устранения проблем с подключением пользователей к серверам. Объединяйте Test-MapiConnectivity с разными командлетами, чтобы решить конкретный вопрос без необходимости вручную разбираться в данных:

Почтовые ящики: Get-Mailbox <Mailbox Name> | Test-MapiConnectivity

Базы данных почтовых ящиков: Get-MailboxDatabase <Database Name> | Test-MapiConnectivity

Серверы: Get-MailboxServer <Server Name> | Test-MapiConnectivity

Нужно добавить псевдоним для нескольких групп рассылки с похожими именами? Введите:

Get-DistributionGroup *Exchange* | Add-DistributionGroupMember -Member kim

Эта команда добавляет псевдоним «kim» для вех групп рассылки, содержащих слово «Exchange».

Нужно точно зарегистрировать все события, происходящие при использовании командной консоли Exchange? Воспользуйтесь командлетом Start-Transcript . Все действия после запуска этого командлета будут записываться в указанный текстовый файл. Чтобы остановить сеанс записи, используйте командлет Stop-Transcript .

Обратите внимание, что командлет Start-Transcript по умолчанию перезаписывает текстовый файл назначения. Если нужно дописать сеанс в конец существующего файла, используйте параметр Append :

Start-Transcript c:\MySession.txt -Append

 

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

1..10 | ForEach { "do something here" }

Например, следующая команда создает на сервере TestServer 10 новых групп хранения с именами от sg1 до sg10:

1..10 | ForEach { New-StorageGroup -Name "sg$_" -server TestServer }

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

Get-ExchangeServer | Get-MailboxDatabase -Status | Format-Table Name, *Back*

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

Get-MailboxDatabase <Source Mailbox Database> | Get-Mailbox | Move-Mailbox -TargetDatabase <Destination Mailbox Database>

В командлете Get-MailboxDatabase можно даже воспользоваться подстановочными знаками, чтобы объединить почтовые ящики из нескольких исходных баз данных почтовых ящиков в одну базу данных назначения почтовых ящиков.

Имеется пользователь с доступом к сети, тем не менее поддерживающий внешнюю учетную запись электронной почты за пределами вашей организации Exchange? Exchange Server 2007 теперь позволяет создавать новых пользователей с поддержкой электронной почты, которые являются обычными учетными записями Active Directory, но также ведут себя как контакты с поддержкой электронной почты. Командлет Enable-MailUser дает возможность добавить атрибуты почтового контакта для любого существующего пользователя Active Directory, почтовый ящик которого находится не на сервере Exchange. Пользователи в вашей организации Exchange получают возможность отправлять сообщения электронной почты на эту внешнюю учетную запись пользователя. Введите:

Enable-MailUser -Identity <Active Directory Alias> -ExternalEmailAddress <Destination SMTP Address>

Нужно изменить установленную по умолчанию квоту запрещения отправки для базы данных почтовых ящиков? Введите:

Set-MailboxDatabase <Mailbox Database Name> -ProhibitSendQuota <New Quota Size>

При использовании параметра ProhibitSendQuota можно указать число байтов. Например, если нужно установить для квоты запрещенной отправки значение 200 мегабайт, введите:

ProhibitSendQuota 200MB

Аналогичным образом можно также настроить параметры IssueWarningQuota и ProhibitSendReceiveQuota .

Нужно проверить, какая версия Exchange Server работает на каждом из серверов? Введите:

Get-ExchangeServer | Format-Table Name, *Version*

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

Get-ExchangeServer | Where { $_.IsExchange12TrialEdition -Eq $true } | Format-Table Name, *Trial*

Требуется определить, какой выпуск программного обеспечения работает на сервере, Exchange Server 2007 Standard или Exchange Server 2007 Enterprise? Введите:

Get-ExchangeServer <Server Name> | Format-Table Name, Edition

Если нужно просмотреть выпуск программного обеспечения для всех своих серверов Exchange, опустите параметр <Server Name> .

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

New-Mailbox -Name <Conference Room Name> -UserPrincipalName <SMTP Address> -Database <Mailbox Database> -OrganizationalUnit <Organizational Unit> -Room

Эта команда создает отключенного пользователя Active Directory с почтовым ящиком, принимающим приглашения на собрание от пользователей.

Нужно добавить заявление об отказе отт ответственности во все исходящие сообщения электронной почты? Введите:

$Condition = Get-TransportRulePredicate FromScope

$Condition.Scope = "InOrganization"

$Condition2 = Get-TransportRulePredicate SentToScope

$Condition2.Scope = "NotInOrganization"

$Action = Get-TransportRuleAction ApplyDisclaimer

$Action.Text = "Sample disclaimer text"

New-TransportRule -Name "Sample disclaimer" -Condition @($Condition, $Condition2) -Action @($Action)

Нужно управлять свойствами сообщений электронной почты, отправленных в конкретный домен? Воспользуйтесь командлетами RemoteDomain . Создайте новый удаленный домен, используя командлет New-RemoteDomain . Введите:

New-RemoteDomain -Name "Contoso.com Configuration" -DomainName contoso.com

Затем измените нужные свойства этого удаленного домена с помощью командлета Set-RemoteDomain :

Set-RemoteDomain "Contoso.com Configuration" -AutoReplyEnabled $True -AutoForwardEnabled $True

Командлет Set-OwaVirtualDirectory позволяет управлять возможностями, доступными пользователям Outlook Web Access. Введите:

Set-OwaVirtualDirectory "OWA (Default Web Site)" -ContactsEnabled $True -ChangePasswordEnabled $True

Логическими (Boolean) являются параметры, значением которых может быть либо $True, либо $False. Логические значения обычно используются для объекта как флаг, изменяющий поведение объекта. В командной консоли Exchange значение логического (Boolean) параметра необходимо указывать как $True, $False, 1 или 0. Никакие другие значения недопустимы, включая True или False. Например, обе следующие команды устанавливают для параметра ExternalDsnSendHtml значение $True:

Set-TransportServer <Server Name> -ExternalDsnSendHtml $True

Set-TransportServer <Server Name> -ExternalDsnSendHtml 1

Нужно удалить из очередей сервера все сообщения электронной почты, отправленные от имени конкретного домена, не создавая отчет о недоставке? Введите:

Remove-Message -WithNDR $False -Filter { FromAddress -Like "*@contoso.com" }

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

Get-MailboxDatabase -Server <Server Name> | Set-MailboxDatabase -ItemRetention 45.00:00:00

Можно также применить эти же ограничения хранения удаленных элементов ко всем серверам своей организации :

Get-MailboxDatabase | Set-MailboxDatabase -ItemRetention 45.00:00:00 -MailboxRetention 120.00:00:00

Нужно узнать, какими разрешениями обладает учетная запись пользователя Active Directory относительно конкретного почтового ящика? Используйте:

Get-Mailbox <Mailbox to Check> | Get-MailboxPermission -User <Active Directory User>

Нужно узнать, разрешениями для каких почтовых ящиков обладает конкретный пользователь Active Directory? Введите:

Get-Mailbox -ResultSize Unlimited | Get-MailboxPermission -User <Active Directory User> | Format-Table Identity, AccessRights, Deny

Внимание! Эта команда перечисляет все почтовые ящики в организации. При большом количестве почтовых ящиков может понадобиться указать конкретные почтовые ящики.

Нужно получить перечень состояний резервных копий для всех баз данных почтовых ящиков в организации? Введите:

Get-MailboxDatabase -Status | Format-Table Name, Server, *Backup*

Как насчет почтовых ящиков только на конкретном сервере? Введите:

Get-MailboxDatabase -Server <Server Name> -Status | Format-Table Name, *Backup*

Для получения текущего состояния сервера или базы данных Exchange используется параметр Status . Например:

Get-ExchangeServer -Status | Format-List

Get-MailboxDatabase -Server <Server Name> -Status | Format-List

Нужно просмотреть состояние подключения всех баз данных почтовых ящиков? Введите:

Get-MailboxDatabase -Status | Format-Table Name, Server, Mounted

В чем разница между фильтрацией на стороне сервера и на стороне клиента? Фильтрация на стороне сервера используется для командлетов получателей и очередей, поддерживающих параметр Filter, так как эти командлеты возвращают большие наборы результатов. Сервер фильтрует результаты, используя указанные условия, а затем отправляет получателю отфильтрованные результаты. Фильтрация на стороне клиента может использоваться для любого командлета. Весь набор результатов передается на клиентский компьютер, который затем выполняет фильтрацию данных и предоставляет отфильтрованный набор данных. Фильтрация на стороне клиента использует командлет Where-Object, название которого можно сократить до Where.

Единая система обмена сообщениями Exchange 2007 позволяет переадресовать вызовы, не прошедшие проверку подлинности, на добавочный телефонный номер оператора, а не на набранный добавочный телефонный номер. Чтобы получить список пользователей, для которых единая система обмена сообщениями переводит оператору вызовы, не прошедшие проверку подлинности, введите:

Get-UMMailbox | `

Where-Object { $_.AllowUMCallsFromNonUsers -eq `

[Microsoft.Exchange.Data.Directory.Recipient.AllowUMCallsFromNonUsersFlags] "None" }

Чтобы получить только те данные, которые нужны для просмотра или работы, можно воспользоваться фильтрацией на стороне клиента. В следующем примере возвращаются все пользовательские учетные записи Active Directory, включенные в подразделение «Engineering», которые размещаются в таблице из двух столбцов, Name и Department. С помощью параметра ResultSize командлет Get-User ограничивает результат до 2000 пользователей.

Get-User -ResultSize 2000 | Where { $_.Department -Eq "Engineering" } | Format-Table Name, Department

Специальная переменная $_ представляет объекты, передаваемые из одного командлета в другой по конвейеру. Переменная $_ автоматически инициализируется средой и привязывается к текущему объекту конвейера. Свойства объекта, присвоенного переменной $_, доступны точно так же, как и свойства любого другого объекта. В следующем примере показано, как можно просмотреть свойство Name каждого объекта почтового ящика, передаваемого с помощью конвейера:

Get-Mailbox | ForEach { $_.Name }

Командлет Import-Csv позволяет импортировать файлы в формате CSV и рассматривать их как объекты. Каждая строка файла формата CSV становится элементом массива, а каждый столбец становится свойством. Можно присвоить файл формата CSV переменной или передать его содержимое по конвейеру непосредственно другому командлету. В следующем примере в файле формата CSV три столбца, Name, Alias и EmailAddress, с несколькими строками, перебор которых происходит в цикле ForEach . Данные каждой строки используются для создания нового почтового контакта.

Import-Csv | ForEach { New-MailContact -Name $_.Name -Alias $_.Alias -ExternalEmailAddress $_.EmailAddress -OrganizationalUnit Users }

Нужно настроить свой профиль командной консоли Exchange? Для определения местонахождения своего файла Microsoft.PowerShell_profile.ps1 выполните следующую команду:

$Profile

Может понадобиться создать папку PSConfiguration и файл Microsoft.PowerShell_profile.ps1 . Выполнив это, можно добавить избранные функции и псевдонимы, которые будут загружаться при каждом открытии командной консоли Exchange.

Для настройки политики управляемых папок, которая определяет для всех почтовых ящиков организации максимальный размер личной папки электронной почты 10MB, воспользуйтесь следующими командами.

New-ManagedFolder -Name "Reference e-mail folder with 10mb quota" -FolderName "Personal and Reference E-mail" -StorageQuota 10MB

New-ManagedFolderMailboxPolicy "Personal Folder Policy" -ManagedFolderLinks "Reference e-mail folder with 10mb quota"

Get-Mailbox -ResultSize Unlimited | Set-Mailbox -ManagedFolderMailboxPolicy "Personal Folder Policy"

Set-MailboxServer <Server Name> -ManagedFolderAssistantSchedule "Sun.12:00-Sun.11:00"

Требуется посмотреть, что происходит во время выполнения команды? Включите в команду параметр Verbose . Этот параметр предписывает командной консоли Exchange выводить подробные сведения о каждом действии, предпринимаемом сервером для выполнения команды. Эти сведения могут быть полезны при устранении неисправностей.

Любой командлет, допускающий ввод значения размера, позволяет указать, вводится ли целое значение в килобайтах (кБ), мегабайтах (МБ), гигабайтах (ГБ) или терабайтах (ТБ). Например:

Set-Mailbox "Kim Akers" -ProhibitSendQuota 200MB

Командная консоль Exchange регистрирует в журнале все связанные с Exchange команды, вносящие какие-либо изменения в объекты. Операции, выполняемые командами, связанными с Exchange, регистрируются в журнале событий PowerShell. Для включения ведения журнала команд, связанных с Exchange, выполните следующую команду:

Set-ItemProperty HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns\Microsoft.Exchange.Management.PowerShell.Admin -Name LogpipelineExecutionDetails -value 1