Поиск почтового контакта в Exchange через скрипт - PullRequest
0 голосов
/ 23 мая 2018

У меня проблемы с поиском почтовых контактов с помощью PowerShell-скрипта, но если я запускаю ту же команду вручную в PowerShell, она работает.

Команда, которая работает вручную в PowerShell:

Get-MailContact -Filter {name -like "*test*"}

Но если я помещу текст в переменную вроде:

Get-MailContact -Filter {name -like "*$s*"}

, я получу другой результат;в основном ничего вообще, где ни один из контактов не содержит «тест».То же самое, если команда находится в скрипте.

Я могу сделать следующее, но поиск намного медленнее, чего я стараюсь избегать

Get-MailContact -ResultSize unlimited | ? {$_.name -like "*$s*"}

PS Скрипт загружается в модульи поисковое слово вводится как параметр.Поэтому вторая команда предпочтительнее.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Я нашел ответ на этот вопрос.

Я нашел объяснение здесь Краткий ответ: командлеты Exchange немного отличаются синтаксически.

После измененияКудрявые скобки в двойные кавычки, я получил то, что хотел.Решение заключается в следующем:

Get-MailContact -Filter "Name -like '$s'"

Также работает для Get-DistributionGroup:

Get-DistributionGroup -Filter "Name -like '$s'"

Где $s содержит поисковое слово, окруженное подстановочными знаками:

$searchword = "test"
$s = "*$searchword*"
0 голосов
/ 23 мая 2018

Похоже, что фильтр отправляет через строку «как есть», без подстановки (то есть он буквально проверяет пользователя с именем *$s*).Одним из способов решения этой проблемы является создание шаблона заранее.Немного неуклюже, но должно работать:

$name = "Mary"
$pattern = "*$name*"

Get-MailContact -Filter {name -like $pattern}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...