2010-10-25 28 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'" 

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

当你得到一个完整的答案,不要把它作为一个评论...创建一个完整的答案。