无法在Exchange管理控制台中将变量与Get-User -Filter一起使用

时间:2010-10-25 17:57:39

标签: powershell console exchange-server

我似乎无法在下面的情况下使用变量。

[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:\>

当我输入名称时,你可以看到命令工作正常,但是当我使用变量时,命令工作正常。谢谢!

2 个答案:

答案 0 :(得分:4)

我无法访问此cmdlet,您确定它需要一个scriptblock而不是字符串吗?如果它需要一个字符串试试这个:

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

如果确实需要一个scriptblock,请尝试:

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

答案 1 :(得分:1)

如评论中所示,在变量周围添加单引号,或者过滤结果的语法不正确。

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

直接传递参数时,您只需传递变量即可。但在这种情况下,您正在构建格式正确的查询字符串,单引号是其中的一部分。

当您得到完整答案时,请不要将其留作评论......将其创建为完整答案。