我希望有人可以在这里帮助我。多亏了Google的帮助,我能够在线找到一个PowerShell脚本,该脚本显示了我们环境中所有空的DL,因为我们正在尝试进行清理。这是该脚本:
Get-DistributionGroup -ResultSize Unlimited |? {!(Get-DistributionGroupMember $_.PrimarySMTPAddress).Count} | select DisplayName,PrimarySMTPAddress | Export-Csv DLsToRemove3.csv
我添加了一个Export-Csv
以便将列表放入文件中。我开始浏览列表,发现其中列出的某些DL实际上有一个成员。此时,我尝试对CSV文件运行另一个脚本,以获取包含其中一个成员和该成员的DL的列表。这是该脚本:
Import-Csv "C:\Users\177626\DLsToRemove3.csv" | foreach {$Group=$_.PrimarySmtpAddress; Get-DistributionGroupMember -Identity $Group | select @{Name="Group";Expression={$Group}}, DisplayName | Export-Csv Members.csv -NoType}
运行该命令时,CSV中完全没有信息。我正在寻求帮助,可以将第二步添加到第一步并将这两个脚本合并为一个脚本,或者至少能够使第二个脚本起作用以查看其中包含该成员的DL。
谢谢!
答案 0 :(得分:1)
试试看。
Get-DistributionGroup -ResultSize Unlimited | ? { (Get-DistributionGroupMember $_.PrimarySMTPAddress | Measure-Object).Count -eq 0 } | select DisplayName,PrimarySMTPAddress | Export-Csv DLsToRemove3.csv
在对数组中的对象进行计数时,Measure-Object更可靠。
答案 1 :(得分:1)
这从来没有让我得到空的DL
$emptyGroups = foreach ($grp in Get-DistributionGroup -ResultSize Unlimited) {
if (@(Get-DistributionGroupMember –Identity $grp.DistinguishedName -ResultSize Unlimited).Count –eq 0 ) {
[PsCustomObject]@{
DisplayName = $grp.DisplayName
PrimarySMTPAddress = $grp.PrimarySMTPAddress
DistinguishedName = $grp.DistinguishedName
}
}
}
$emptyGroups | Export-Csv 'C:\Users\177626\DLsToRemove4.csv' -NoTypeInformation
@()
强制将Get-DistributionGroupMember
结果放入一个数组中以获得准确的.Count
属性