Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Переменные Powershell в Get-AdUser

Автор вопроса: adam_gavОтветов: 2

Я пытаюсь написать простой сценарий 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'.

Итак, проблема в том, что переменные не заменяются их значениями. Что я делаю не так?

powershellactive-directory

Ответы

Ответ 1 · рейтинг 1 · Andrey Marchuk

Неправильный параметр фильтра. Если вы хотите, чтобы 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 }

Ответ 2 · Shay Levy

Если расширение переменной не работает при передаче переменной, попробуйте передать ее в кавычках:

{GivenName -eq "$GivenName"}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы