【问题标题】:PowerShell to pull all empty DLs with no membersPowerShell 拉取所有没有成员的空 DL
【发布时间】:2020-04-12 05:06:55
【问题描述】:

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

谢谢!

【问题讨论】:

  • 您好,如果您需要更详细的通讯组报告,例如空通讯组、拥有超过“N”个成员的通讯组、列出通讯组及其成员等,请尝试此脚本。o365reports.com/2019/05/23/…

标签: powershell csv scripting office365


【解决方案1】:

这从来没有让我获得空的DL's

$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 属性

【讨论】:

  • 嗨!我将其标记为答案,再次感谢您。如果您不介意,请快速提问。是否有办法区分或将另一列标记为 DL 的 Cloud 或 On-Prem?
  • @Schmit 当然,只需执行Get-DistributionGroup -Identity "somegroup" | fl *1 to see what else properties you eant and add them to the construction of the [PsCustomObject]`。
  • 我不认为这会起作用,除非我创建一个属性来拉。由于所有 AD 组都已同步到云端,我无法区分从 AD 同步的内容和已在云中创建的内容。我查看了整个| fl 并没有看到任何可区分的项目来将两者分开
  • @Schmit 我尝试用谷歌搜索它,但如果一个组是在本地或云中创建的,似乎无法找到它。如果您知道迁移发生的日期,也许唯一有用的属性可能是 WhenCreated..
【解决方案2】:

试试这个吧。

Get-DistributionGroup -ResultSize Unlimited | ? { (Get-DistributionGroupMember $_.PrimarySMTPAddress | Measure-Object).Count -eq 0 } | select DisplayName,PrimarySMTPAddress | Export-Csv DLsToRemove3.csv

Measure-Object 在对数组中的对象进行计数时更可靠。

【讨论】:

    【解决方案3】:

    有一个属性 msExchGroupMemberCount 由 Exchange 维护,因此更快的方法是使用 get-adgroup 过滤该属性。

    get-adgroup -Filter "msExchGroupMemberCount -eq 0" -Properties DisplayName,mail | select DisplayName,mail
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2019-05-19
      • 2021-04-24
      • 1970-01-01
      • 2021-06-25
      相关资源
      最近更新 更多