Powershell 通讯组列表中接受的发件人、ManagedBy和ModeratedBy需要SMTP地址
因此,我正在PowerShell中工作,以便从exchange服务器中提取一些数据 我希望从通讯组列表中获取以下字段 显示名称、SAM帐户名称、主SMTP地址、接受的发件人、启用审核、审核人、仅内部发件人和管理人 我正在使用下面的脚本来执行此操作Powershell 通讯组列表中接受的发件人、ManagedBy和ModeratedBy需要SMTP地址,powershell,exchange-server,displayname-attribute,Powershell,Exchange Server,Displayname Attribute,因此,我正在PowerShell中工作,以便从exchange服务器中提取一些数据 我希望从通讯组列表中获取以下字段 显示名称、SAM帐户名称、主SMTP地址、接受的发件人、启用审核、审核人、仅内部发件人和管理人 我正在使用下面的脚本来执行此操作 $props = @( "DisplayName" "SamAccountName" "PrimarySmtpAddress" @{Name="Accepted Senders";Expression= {(([stri
$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和mediatedby,而不是smtp地址
为了让它更有趣,首先是电子邮件smtp格式。last@company.com虽然显示名称是最后一个,但通常是第一个,并带有其他单词,如inactive和mixed in
我已经能够格式化managedby和accepted Senders的数据,以便只要只有一个名称,并且在显示名称中没有其他单词,名称就会显示为最早和最晚,但我无法让它插入句点,以便我可以通过管道将输出传输到SMTP的get aduser请求
不管怎样,如果你能帮忙,请告诉我
Ryan如果您想与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 ';'}
}
我不知道您的代码$\u0.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 ';'}
}
非常感谢!这真的很有帮助。我能够使用同样的逻辑让其他字段也工作。