PowerShell提取没有成员的所有空DL

时间:2019-12-19 15:14:11

标签: powershell csv scripting office365

我希望有人可以在这里帮助我。多亏了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。

谢谢!

2 个答案:

答案 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属性