Сопоставьте объект Mailbox и объект MailboxStatistics и ReducedRecipient

В Exchange EMS есть три cmd-let:

  • Get-Mailbox — возвращает тип объекта [Mailbox];
  • Get-MailboxStatistics — возвращает тип объекта [MailboxStatistics];
  • Get-Recipient — возвращает тип объекта [ReducedRecipient].

В каждом из этих типов объектов есть некоторые «ID»-подобные свойства. После прочтения документации здесь, здесь и здесь Я до сих пор не понимаю, что означают эти идентификаторы и какие из этих свойств однозначно определяют почтовый ящик внутри организации.
Сравнивая вывод этих трех командлетов на один и тот же почтовый ящик, я вижу следующее:

  • [Mailbox].ExchangeGuid = [MailboxStatistics].MailboxGuid = [MailboxStatistics].Идентификация = [MailboxStatistics].МапИдентити = [ReducedRecipient].ExchangeGuid
  • [Mailbox].АрхивГид = [MailboxStatistics](такого свойства нет) = [ReducedRecipient].АрхивГид
  • [Mailbox].Guid = [MailboxStatistics].MailboxGuid = [ReducedRecipient].Guid

Мой вопрос:

  1. Где я могу найти подробное описание этих свойств? Документация MS не имеет
  2. Какое из этих свойств можно использовать для уникального сравнения результатов указанных командлетов?

Спасибо!

2 ответа
2

С точки зрения того, «какие из этих свойств однозначно определяют почтовый ящик в организации», реалистичный ответ — все.

AD + Exchange имеют несколько способов уникальной ссылки на отдельного пользователя/почтовый ящик. Например, если вы ищете Get-Mailbox и смотрите на параметр -Identity, вы увидите, что существует 10 различных способов сослаться на почтовый ящик, каждый из которых уникален для этого конкретного почтового ящика.

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

Вы можете почувствовать, какие значения доступны, просто запустив

Get-Mailbox -Identity <mailbox username> | Select *

который покажет их все, а также другие свойства, доступные из этого вывода.

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

Например, эти два варианта дают одинаковые результаты:

$foo1 = Get-Mailbox -Identity MyUsername | Select -ExpandProperty SamAccountName
Get-MailboxStatistics $foo1

$foo2 = Get-Mailbox -Identity MyUsername
Get-MailboxStatistics $foo2

единственное отличие состоит в том, что если, например, командлет, который вы пытаетесь запустить, не поддерживает SamAccountName в качестве значения идентификатора (поддерживает Get-MailboxStatistics), первая команда завершится ошибкой, а вторая, скорее всего, сработает, так как может использовать любой из другие значения идентичности, которые он поддерживал из $foo2 объект, например DistinguishedName, GUID, UserPrincipalName и т. д., чтобы получить желаемый результат.

Кейт Лэнгмид

Хотя между различными командлетами и данными, которые они возвращают для одного и того же почтового ящика, может существовать корреляция, сложная логика во вложенных foreach петли и calculated properties может потребоваться, когда ввод трубопровода является вдостаточный. Похоже, что вы в первую очередь ищете разъяснения, а не конкретный код для извлечения объектов и значений для командлета для каждого почтового ящика, поэтому я сосредоточился на предоставлении разъяснений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *