2010-10-25 27 views
3

在下面的情況中我似乎無法使用變量。在Exchange管理控制檯中不能在Get-User-Filter中使用變量

[PS] C:\>Get-User -Filter {SamAccountName -eq "Test.Smith"} 
Name              RecipientType 
----              ------------- 
Test Smith             UserMailbox 

[PS] C:\>$SamAccountName = "Test.Smith" 
[PS] C:\>Get-User -Filter {SamAccountName -eq $SamAccountName} 
[PS] C:\>echo $SamAccountName 
Test.Smith 
[PS] C:\> 

你可以看到命令工作正常,當我輸入名稱,但沒有當我使用變量。謝謝!

回答

4

我無權訪問此cmdlet,您確定它需要scriptblock而不是字符串嗎?如果需要一個字符串試試這個:

Get-User -Filter "SamAccountName -eq $SamAccountName" 

如果真的需要一個腳本塊嘗試:

Get-User -Filter {SamAccountName -eq $SamAccountName}.GetNewClosure() 
+0

謝謝基思。我不確定它需要什麼,但引用方法會產生錯誤,並且{} .GetNewClosure()沒有任何區別。我在這裏複製了第5步的這一行 - http://technet.microsoft.com/en-us/library/bb936719%28EXCHG.80%29.aspx#NewUsrps1 – RRR 2010-10-25 22:42:02

+1

文檔說它應該帶一個字符串 - 去圖。 http://technet.microsoft.com/en-us/library/aa996896(EXCHG.80).aspx – 2010-10-25 22:56:22

+1

這些文檔中的示例二:'Get-User -Filter「標題式的'* Manager'」'。嘗試''SamAccountName -eq'$ SamAccountName'「'。 – 2010-10-25 22:57:36

1

正如在評論中看到,周圍的變量添加單引號,或您的過濾結果有不正確的語法。

Get-User -Filter "SamAccountName -eq '$SamAccountName'" 

直接傳遞參數時,您可以傳遞變量。但在這種情況下,您正在構建格式正確的查詢字符串,並且單引號是其中的一部分。

當你得到一個完整的答案,不要把它作爲一個評論...創建一個完整的答案。