Get-AdUser中的Powershell变量

时间:2012-03-13 08:24:50

标签: powershell active-directory

我正在尝试编写一个简单的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'。

所以问题是变量没有用它们的值代替。我做错了什么?

2 个答案:

答案 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"}