我正在尝试使用PowerShell批量更新大量的通讯组列表,到目前为止我写过:
foreach ($Item in @(Import-Csv -Path "ranks.csv")) {
$Rank = $Item.Rank
Set-DynamicDistributionGroup -Identity "$Rank" -DisplayName "$Rank (NC)" -Name "$Rank (NC)" -RecipientFilter {(RecipientType -eq "UserMailbox") -and (Title -eq "$Rank") -and (Company -eq "Company")}
}
Exchange命令是正确的,除了(Title -eq“$ Rank”)部分之外一切正常,它不解析变量并且只是像这样发送:
(RecipientType -eq 'UserMailbox') -and (Title -eq '$Rank') -and (Company -eq 'Company')
我猜这与RecipientFilter过滤器内部的花括号有关,但不知道如何阻止这种情况发生。
我非常感谢任何帮助,因为我不想手动更新几百个列表!
答案 0 :(得分:2)
如果使用可扩展字符串创建过滤器脚本块,它是否有效?
foreach ($Item in @(Import-Csv -Path "ranks.csv")) {
$Rank = $Item.Rank
$filter = [scriptblock]::create("(RecipientType -eq 'UserMailbox') -and (Title -eq '$Rank') -and (Company -eq 'Company')")
Set-DynamicDistributionGroup -Identity "$Rank" -DisplayName "$Rank (NC)" -Name "$Rank (NC)" -RecipientFilter $filter
}