Итак, я создал с помощью замечательных людей, плавающих вокруг Stack, сценарий, который опрашивает AD для групп рассылки и создает CSV, заполненный
- Отображаемое имя
- Имя учетной записи SAM
- Основной SMTP-адрес группы
- SMTP-адрес для принятых отправителей,
- SMTP-адрес модерируемой
- SMTP-адрес Управляется
Первые три легко получить, поскольку они являются стандартными атрибутами для группы рассылки. Проблема возникает, когда я пытаюсь преобразовать отображаемые имена в членстве в группе в первичные SMTP-адреса для Принятых отправителей, Умеренный и Управляемый. Текущий скрипт работает для получения SMTP-адресов, однако отображаемое имя, которое мы используем для фильтрации, также иногда используется для вторичных и третичных учетных записей, поэтому иногда мы возвращаем несколько результатов для каждого отображаемого имени. Мне нужно отфильтровать эти вторичные и третичные учетные записи электронной почты из списка. К счастью, у нас есть вторичное поле, extensionAttribute, которое всегда заполняется 1, если это основная учетная запись пользователя. Поэтому я попытался изменить -Filter с помощью -and "extensionAttribute8 -eq '1'", и он взорвался. Я также попытался добавить дополнительное поле -Properties, которое ссылается на атрибут extension, но также ничего не сделало.
Просто происходит сбой с
ActiveDirectlyCmdlet.Microsoft.ActiveDirectly.Management.AdfilterParsingException, Microsoft.adtiveDirectory.Management.Commands.GetADUser
Ниже приведен сценарий, который я ' Мы пытались собрать вместе, надеюсь, один из вас, гуру PowerShell, может помочь мне здесь.
Заранее благодарим за помощь!
Райан
$props = @(
"DisplayName"
"SamAccountName"
"PrimarySmtpAddress"
@{n='Accepted Senders';e= {($_.acceptmessagesonlyfromsendersormembers | Foreach-Object {
(Get-AdUser -Filter "DisplayName -eq '$($_.Split('/')[-1])'" -And "extensionAttribute8 -eq '1'" -Properties ('extensionattribute8', 'ProxyAddresses') |
Select-Object -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:'}) -replace '^SMTP:'}) -join ';'}}
"ModerationEnabled"
@{N="ModeratedBy";E= {($_.ModeratedBy | ForEach-Object {
(Get-AdUser -Filter "DisplayName -eq '$($_.Split('/')[-1])'" -And "extensionAttribute8 -eq '1'" -Properties ('extensionattribute8', 'ProxyAddresses') |
Select-Object -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:'}) -replace '^SMTP:'}) -join ';'}}
@{Name="Internal Senders Only";E={$_.RequireSenderAuthenticationEnabled}}
@{N="ManagedBy";E= {($_.ManagedBy | ForEach-Object {
(Get-AdUser -Filter "DisplayName -eq '$($_.Split('/')[-1])'" -And "extensionAttribute8 -eq '1'" -Properties ('extensionattribute8', 'ProxyAddresses') |
Select-Object -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:'}) -replace '^SMTP:'}) -join ';'}}
)
Get-DistributionGroup -ResultSize Unlimited | Select-Object $props | export-Csv C:\temp\testforformat.csv -NoTypeInformation
Для справки ниже приведен скрипт, который я пытаюсь изменить.
$props = @(
"DisplayName"
"SamAccountName"
"PrimarySmtpAddress"
@{n='Accepted Senders';e= {($_.acceptmessagesonlyfromsendersormembers | Foreach-Object {
(Get-AdUser -Filter "DisplayName -eq '$($_.Split('/')[-1])'" -Property ProxyAddresses |
Select-Object -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:*.*@*.com'}) -replace '^SMTP:*.*@*.com'}) -join ';'}}
"ModerationEnabled"
@{N="ModeratedBy";E= {($_.ModeratedBy | ForEach-Object {
(Get-AdUser -Filter "DisplayName -eq '$($_.Split("/")[-1])'" -Property ProxyAddresses |
Select-Object -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:'}) -replace '^SMTP:'}) -join ';'}}
@{Name="Internal Senders Only";E={$_.RequireSenderAuthenticationEnabled}}
@{N="ManagedBy";E= {($_.ManagedBy | ForEach-Object {
(Get-AdUser -Filter "DisplayName -eq '$($_.Split("/")[-1])'" -Property ProxyAddresses |
Select-Object -Expand ProxyAddresses | Where-Object {$_ -cmatch '^SMTP:'}) -replace '^SMTP:'}) -join ';'}}
)
Get-DistributionGroup -ResultSize Unlimited | Select-Object $props | export-Csv C:\temp\testforformat.csv -NoTypeInformation
``