Qui i gruppi di distribuzione di posta elettronica Exchange (i dinamici in primis, ma abbiamo anche qualche gruppo di distribuzione standard con la stessa configurazione) sono limitati e permettono l’invio di posta elettronica solo a determinati mittenti. Nel 99% dei casi preferisco autorizzare gruppi di sicurezza all’interno dei quali metto le singole utenze (che si tratti di User Mailbox o Shared Mailbox poco importa, purché sia corretto che “stiano lì dentro“).
Avevo bisogno di tirare fuori da ogni gruppo di distribuzione dinamico il contenuto del parametro AcceptMessagesOnlyFromMembers (che è proprio quello che determina chi può inviare posta elettronica al gruppo) per successiva analisi. Metto qui lo snippet utilizzato:
Get-DynamicDistributionGroup | ForEach-Object {
$group = $_
foreach ($sender in $group.AcceptMessagesOnlyFromSendersOrMembers) {
try {
$resolved = Get-Recipient $sender
[PSCustomObject]@{
GroupDisplayName = $group.DisplayName
GroupPrimaryAddress = $group.PrimarySmtpAddress
SenderDisplayName = $resolved.DisplayName
SenderPrimaryAddress = $resolved.PrimarySmtpAddress
SenderType = $resolved.RecipientType
}
} catch {
[PSCustomObject]@{
GroupDisplayName = $group.DisplayName
GroupPrimaryAddress = $group.PrimarySmtpAddress
SenderDisplayName = $sender.ToString()
SenderPrimaryAddress = "N/A"
SenderType = "Unresolved"
}
}
}
} | Sort-Object GroupDisplayName, SenderDisplayName
Per una mia comodità ho anche aggiunto un Export-CSV .\DDG_AcceptFrom.csv -NoTypeInformation in coda (ho inserito un ulteriore pipe dopo Sort-Object GroupDisplayName, SenderDisplayName) per permettermi di lavorare più comodamente in Excel, ma questa è una tua scelta. Quello che otterrai, anche questo per mia specifica comodità, è un elenco che propone singolarmente le utenze accettate. Vuol dire che, se un gruppo dinamico di distribuzione posta ha tre o quattro mittenti autorizzati, ti verranno proposte quattro righe con il medesimo gruppo di distribuzione dinamico, il suo indirizzo di posta principale e poi il mittente (gruppo/utente autorizzato).
Se, invece, non vuoi questa moltiplicazione di pane e pesci righe, puoi sempre unire i mittenti autorizzati in una singola riga:
Get-DynamicDistributionGroup | ForEach-Object {
$group = $_
$resolvedSenders = ($group.AcceptMessagesOnlyFromSendersOrMembers | ForEach-Object {
try {
(Get-Recipient $_).DisplayName
} catch {
$_
}
}) -join ", "
[PSCustomObject]@{
DisplayName = $group.DisplayName
PrimarySmtpAddress = $group.PrimarySmtpAddress
AcceptMessagesOnlyFromMembers = $resolvedSenders
}
} | Sort-Object DisplayName
Anche in questo caso puoi sempre accodare un’esportazione in file CSV se lo ritieni opportuno. Io, nel frattempo, ho salvato entrambi gli snippet anche su Gist, non si sa mai: gist.github.com/gioxx/4d804e9b1e68d78d9e529055628ff0b7.
#KeepItSimple
Pillole
Articoli rapidi e pratici. fai clic qui.