我似乎无法在下面的情况下使用变量。
[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:\>
当我输入名称时,你可以看到命令工作正常,但是当我使用变量时,命令工作正常。谢谢!
答案 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'"
直接传递参数时,您只需传递变量即可。但在这种情况下,您正在构建格式正确的查询字符串,单引号是其中的一部分。
当您得到完整答案时,请不要将其留作评论......将其创建为完整答案。