Если вы используете стиль кавычек для окружения строкового значения, внутренние одинаковые кавычки должны быть экранированы. Один из способов сделать это - удвоить кавычку.
# Notice the two consecutive single quotes
$email = "First.O''Last@email.com"
Get-ADUser -Filter "EmailAddress -eq '$email'"
Обратите внимание, что вам нужен только двойной '
, потому что ваше значение атрибута EmailAddress
содержит окружающий '
в фильтре, который является отличным практика для этого фильтра. Рекомендуется использовать внешние двойные кавычки для фильтра и внутренние одинарные кавычки для значения атрибута.
Однако, поскольку вы сохраняете искомое значение в переменной, которую можно получить с помощью расширяемой строки, вы можете упростите свой пример, заключив весь фильтр в одинарные кавычки, исключив необходимость во внутренних кавычках.
$email = "First.O'Last@email.com"
Get-ADUser -Filter 'EmailAddress -eq $email'
Как правило, у вас может быть список атрибутов для запроса из файла или другого объекта. Скажем, например, что у вас есть список адресов электронной почты в файле CSV с именем users.csv
. Электронные письма находятся в столбце под названием email
. Вы можете программно заменить одинарные кавычки двумя одинарными кавычками перед выполнением команды Get-ADUser
:
$users = Import-Csv users.csv
foreach ($user in $users) {
$email = $user.email -replace "'","''"
Get-ADUser -filter "mail -eq '$email'"
}