PowerShell для получения электронной почты с апострофом - PullRequest
0 голосов
/ 14 апреля 2020

Пользователь AD имеет апостроф в адресе электронной почты - First.O 'Last@email.com Команды PowerShell:

$email = "First.O'Last@email.com"
Get-ADUser -Filter "(EmailAddress -eq '$($email)')"
  • не работает.
$email = "First.Last@email.com"
Get-ADUser -Filter "(EmailAddress -eq '$($email)')"
  • работает.

Как заставить команду работать, если в письме есть апостроф?

1 Ответ

0 голосов
/ 14 апреля 2020

Если вы используете стиль кавычек для окружения строкового значения, внутренние одинаковые кавычки должны быть экранированы. Один из способов сделать это - удвоить кавычку.

# 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'"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...