Я пытаюсь получить список учетных записей Active Directory, у которых нет адреса с заданным доменным именем в их proxyAddresses. Я знаю, что, чтобы найти те, которые делают, я могу сделать:
Get-AdUser -Filter 'proxyAddresses -like ''smtp:*@domain.com'''
Однако обратное не работает, потому что, если у них есть хотя бы одна другая запись в proxyAddresses (и все наши учетные записи имеют, например, адреса X500 и адреса onmicrosoft), она будет соответствовать ей и все равно будет возвращать объект. Я также знаю, что могу сделать что-то вроде:
Get-AdUser -Filter * -Properties proxyAddresses |
ForEach-Object -Begin { $filteredList = @() } -Process {
$ не найдено = $ правда
$_.proxyAddresses | ForEach-Object -Process {
если ($_ - как 'smtp:*@domain.com') {
$ не найдено = $ ложь
}
}
если ($ notfound) { $filteredList += $_ }
}
Есть ли способ сделать это в скрипте Where-Object FilterScript? то есть фильтровать на стороне сервера, а не на стороне клиента? Я пробовал это, чтобы увидеть, могу ли я изменить true/false на «-like», но, похоже, это не сработало, у меня все еще есть все учетные записи:
Get-AdUser -Filter * -Properties proxyAddresses | Where-Object -FilterScript { if ($_.proxyAddresses -like 'smtp:*@domain.com') {$false} else {$true}}
Любые идеи?