Вы не ошиблись, это ошибка модуля
Тип полезной нагрузки, которую вы должны использовать с параметром -Filter
, отличается в зависимости от того, с каким провайдером вы работаете, решение о дизайне может быть довольно запутанным!
Вывод Get-Help Get-ADUser -Parameter Filter
дает вам довольно подробные примеры различных вариантов синтаксиса, которые вы можете использовать с реализацией синтаксиса фильтра в поставщике Active Directory.
Вот пример:
#To get all user objects that have an e-mail message attribute, use one of the following commands:
Get-ADUser -Filter {EmailAddress -like "*"}
Похоже, что поставщик ActiveDirectory устанавливает особые ограничения, которые вы должны заключить в кавычки. Вот что происходит, когда я ищу свою учетную запись, не заключая в кавычки свою электронную почту.
Get-ADUser -Filter {EmailAddress -eq stephen@foxdeploy.com}
Get-ADUser : Error parsing query: 'EmailAddress -eq stephen@foxdeploy.com'
Error Message: 'syntax error' at position: '18'.
Но добавление кавычек? Это работает!
Get-ADUser -Filter {EmailAddress -eq "stephen@foxdeploy.com"}
DistinguishedName : CN=Stephen,CN=Users,DC=FoxDeploy,DC=local
Enabled : True
GivenName : Stephen
Name : Stephen
ObjectClass : user
ObjectGUID : 6428ac3f-8d17-45d6-b615-9965acd9675b
SamAccountName : Stephen
SID : S-1-5-21-3818945699-900446794-3716848007-1103
Surname :
UserPrincipalName : Stephen@FoxDeploy.local
Как заставить свою работу
Теперь, из-за этой запутанной реализации фильтра, вам нужно изменить поиск пользователя в строке 5 на следующее:
$aduser = Get-ADUser -Filter "EmailAddress -eq `"$($_.EmailAddress)`""
Мы предоставляем -Filter
полезную нагрузку в виде строки. Далее мы хотим использовать String Expansion, чтобы извлечь свойство .EmailAddress
, поэтому мы оборачиваем строку в $( )
, чтобы сигнализировать о расширении строки. Наконец, поставщик хочет, чтобы наше сравнение фильтров было заключено в кавычки, поэтому мы помещаем двойные кавычки вокруг него, а затем экранируем кавычки с помощью символа обратной галочки.
А теперь должно сработать.
TLDR - обвинять провайдера и обвинять модуль, так как существует много несоответствий с модулем Active Directory.