【问题标题】:How to use powershell to return all exchange distribution groups for a user如何使用 powershell 返回用户的所有交换通讯组
【发布时间】:2026-02-04 16:55:01
【问题描述】:

我正在尝试使用 powershell 为特定用户提取 Office365 通讯组列表。当我为用户输入(或粘贴)捕获的 $DN 时,以下内容有效,但如果我捕获 $DN 并将其用作变量,则无法获得正确的结果。

这行得通:

$mailbox=get-Mailbox user@domain.com
$DN=$mailbox.DistinguishedName
$DLs=Get-DistributionGroup -ResultSize Unlimited -Filter {Members -like "CN=Lastname\, First M,OU=domain.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR02A003,DC=prod,DC=outlook,DC=com"}

这些不:

$DLs=Get-DistributionGroup -ResultSize Unlimited -Filter {Members -like $DN}
$DLs=Get-DistributionGroup -ResultSize Unlimited -Filter {Members -like '$DN'}
$DLs=Get-DistributionGroup -ResultSize Unlimited -Filter {Members -like "$DN"}

谁能告诉我如何让 $DN 的变量在脚本中工作?

【问题讨论】:

    标签: powershell office365


    【解决方案1】:

    这就是你需要的:

    $Mailbox=get-Mailbox user@domain.com
    $DN=$mailbox.DistinguishedName
    $Filter = "Members -like ""$DN"""
    Get-DistributionGroup -ResultSize Unlimited -Filter $Filter
    

    Get-DistributionGroup 在 {ScriptBlock} 中时无法识别/扩展过滤器

    您应该创建一个$Filter 变量,该变量不在{ScriptBlock} 中,但它在外部的"Quotes" 和内部的""DoubleQuotes"" 中,以便变量展开。

    【讨论】:

    • 做到了。谢谢阿夫沙洛姆。我把那个脚本按摩了好几个小时,但从没想过要朝那个方向发展。
    • @PenNerd 你欢迎 :)
    【解决方案2】:

    单线:

    Get-DistributionGroup -ResultSize Unlimited -Filter "Members -like ""$((get-Mailbox NT_ID).DistinguishedName)""" | sort name

    【讨论】:

      【解决方案3】:

      Avshalom 感谢这个很棒的脚本。

      我添加了这个来清理结果。只需将“域”替换为您公司的域即可。

      | Select-Object Name, @{label='PrimarySmtpAddress';expression={$_.PrimarySmtpAddress -replace '@domain.com'}}
      

      注意:-filter {Members...} 可能在 get-distributiongroup 命令中被破坏。似乎不接受成员作为可过滤属性。 :(

      【讨论】:

        最近更新 更多