Нужен SMTP-адрес для принятых отправителей, ManagedBy и ModeratedBy в списке рассылки - PullRequest
0 голосов
/ 13 января 2020

Итак, я работаю в PowerShell, чтобы извлечь некоторые данные с моего сервера обмена.

Я хочу получить следующие поля из списка рассылки.

Отображаемое имя, Имя учетной записи SAM, Основной SMTP-адрес, Принятые отправители, Модерация включена, ModeratedBy, Только для внутренних отправителей и Управляется.

Для этого я использую приведенный ниже скрипт.

$props = @(
    "DisplayName"
    "SamAccountName"
    "PrimarySmtpAddress"
    @{Name="Accepted Senders";Expression= {(([string]($_.AcceptMessagesOnlyFromSendersOrMembers | foreach {$_.tostring().split("/")[-1]+';'})).TrimEnd(";") | foreach {$_.split(", ")[2,3,0]})}}
    "ModerationEnabled"
    @{Name="ModeratedBy";Expression= {([string]($_.ModeratedBy | foreach {$_.tostring().split("/")[-1]+';'})).TrimEnd(";")}}
    @{Name="Internal Senders Only";E={$_.RequireSenderAuthenticationEnabled}}
    @{Name="ManagedBy";E= {(([string]($_.ManagedBy | foreach {$_.tostring().split("/")[-1]+';'})).TrimEnd(";").split(", ")[2,3,0])}}
)

Get-DistributionGroup -ResultSize Unlimited | select $props | export-Csv x:\xxxxx\test6.csv -NoTypeInformation

, который в основном работает идеально, за исключением того, что в нем отображается отображаемое имя «Принятые отправители», «ManagedBy» и «ModeratedBy» вместо адреса smtp.

Чтобы сделать его еще более интересным, формат smtp электронной почты является первым. last@company.com, в то время как отображаемые имена - Last, First, часто с дополнительными словами, такими как неактивные и смешанные.

У меня есть смог отформатировать данные для управляемых и принятых отправителей так, чтобы имена отображались первыми последними, если только одно имя и у него нет дополнительных слов в отображаемом имени, но я не могу его вставить период, чтобы я мог направить вывод в запрос get-aduser для SMTP.

В любом случае, дайте мне знать, если вы можете помочь.

Райан

1 Ответ

1 голос
/ 13 января 2020

Если вы хотите взаимодействовать с AD, вы можете сделать со своим вычисленным свойством следующее:

@{
    n='Accepted Senders'
    e={($_.acceptmessagesonlyfromsendersormembers | Foreach-Object {
    (Get-AdUser -Filter "DisplayName -eq '$_'" -Property ProxyAddresses |
        Select -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:'}) -replace '^SMTP:'}) -join ';'}
}

Я не знаю, вызывает ли ваш код $_.tostring().split("/")[-1] проблемы у вас или нет. Однако, если вам нужна эта функциональность, вы можете выбрать следующее:

@{
    n='Accepted Senders'
    e={($_.acceptmessagesonlyfromsendersormembers | Foreach-Object {
    (Get-AdUser -Filter "DisplayName -eq '$($_.Split('/')[-1])'" -Property ProxyAddresses |
        Select -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:'}) -replace '^SMTP:'}) -join ';'}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...