我正在尝试编写一个简单的PowerShell脚本。
Get-ADuser -Filter {GivenName -eq $GivenName $hateList} -SearchBase $Container -Properties displayName,telephoneNumber,department|ForEach-Object {"FullName`t: $($_.displayName)`r`nPhone`t`t: $($_.telephoneNumber)`r`nDepartment`t: $($_.department)`r`n"}
我得到的错误: Get-ADUser:解析查询时出错:'GivenName -eq $ GivenName $ hateList'错误消息:'语法错误'位置:'26'。
所以问题是变量没有用它们的值代替。我做错了什么?
答案 0 :(得分:1)
您的过滤器参数不正确。如果你想让GivenName等于$ GivenName,你应该这样做:
{GivenName -eq $GivenName}
如果你希望它等于$ GivenName或$ hateList,无论它是什么,你应该尝试类似的东西:
{(GivenName -eq $GivenName) -or (GivenName -eq $hateList)}
检查此链接以获取更多过滤条件: http://technet.microsoft.com/en-us/library/ee617241.aspx
您可以先获取具有以下过滤条件的用户列表:
{GivenName -eq $GivenName}
做一些后期处理:
$users | Where-Object { $hateList -notcontains $_.cn }
答案 1 :(得分:0)
如果在传递变量时变量扩展不起作用,请尝试将其括在引号中:
{GivenName -eq "$GivenName"}