我尝试使用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的变量在脚本中工作吗?
答案 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命令中被破坏。似乎不接受会员作为可过滤财产。 :(