如何使用powershell为用户返回所有Exchange分发组

时间:2015-07-06 20:01:00

标签: powershell office365

我尝试使用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的变量在脚本中工作吗?

3 个答案:

答案 0 :(得分:3)

这就是你需要的:

$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""内部变量到扩大。

答案 1 :(得分:0)

一衬垫:

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

答案 2 :(得分:-1)

Avshalom感谢这个非常棒的剧本。

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

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

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