Сценарий powershell, необходимый для сбора свойств почтового ящика от каждого пользователя o365.

Мне нужен (один) сценарий Powershell для сбора следующих атрибутов от каждого пользователя Office 365:

  1. Отображаемое имя
  2. UserPrincipalName
  3. Адрес переадресации
  4. ForwardingSmtpAddress
  5. DeliverToMailboxAndForward
  6. IsMailboxEnabled
  7. AutoReplyState
  8. InternalMessage
  9. ExternalMessage

Цифры 1-6 получаются из команды Get-MailBox. Номера 7-9 получаются из команды Get-MailboxAutoReplyConfiguration (для одного пользователя). Чтобы получить AutoReplyConfiguration для всех пользователей, мы можем передать результаты Get-Mailbox в Get-MailboxAutoReplyConfiguration с помощью команды Get-MailBox | Get-MailboxAutoReplyConfiguration.

Когда у нас есть Collection<PSObject> results, мы можем собирать атрибуты, используя код для итерации по коллекции следующим образом:

string displayName = (string) result.Properties["DisplayName"].Value;

Я бы хотел собрать все 9 вышеупомянутых атрибутов в одном скрипте. Пока я могу только сначала вызвать Get-MailBox, собрать результаты в словарь, затем использовать Get-MailboxAutoReplyConfiguration, собрать результаты, найти пользователя из словаря и применить остальные атрибуты. Мне нужно вызвать скрипт и собрать результаты на C#.

Цель объединения этих двух действий в одно действие - сократить общее время выполнения запроса. Если это на самом деле не более эффективно, дайте мне знать, и я продолжу свои текущие действия. Спасибо!

1
0
317
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Один из способов создания ваших собственных объектов - добавить методы сценария или просто NoteProperties к существующим объектам. (Не забудьте явно выбрать все необходимые вам свойства)

$MailBoxes = Get-MailBox | Foreach-Object { 
$autoConfig = $_ | Get-MailboxAutoReplyConfiguration
$_ | Add-Member -Type NoteProperty -Name AutoReplyState -Value $autoConfig.AutoReplyState 
$_ | Add-Member -Type NoteProperty -Name InternalMessage -Value $autoConfig.InternalMessage
$_ | Add-Member -Type NoteProperty -Name ExternalMessage -Value $autoConfig.ExternalMessage
}

$MailBoxes | Select-Object * 

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/add-member?view=powershell-6

Другие вопросы по теме