2013-03-25 34 views
0

我想批量使用PowerShell更新了大量通訊組列表,我到目前爲止已經寫了這個: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")} 
} 

交換命令是正確的,所有的作品除了(標題-eq「$等級」)部分不解析可變細,只是把它像這樣:

(RecipientType -eq 'UserMailbox') -and (Title -eq '$Rank') -and (Company -eq 'Company') 

我猜這是什麼做的過濾器RecipientFilter在大括號內,但有不知道如何阻止這種情況發生。

任何幫助將不勝感激,因爲我不想手動更新幾百個列表!

回答

0

如果使用可展開的字符串創建過濾器腳本塊,它會工作嗎?

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 
} 
+0

工作完美!我會記下scriptblock函數,因爲這非常有用。 – 2013-03-26 09:48:27