Încerc să obțin o listă de conturi Active Directory care nu au o adresă cu un anumit nume de domeniu în proxyAddresses. Știu că pentru a le găsi pe cele care o fac, pot face:
Get-AdUser -Filtrați „proxyAddresses –cum ar fi „smtp:*@domain.com”
Cu toate acestea, inversul nu funcționează, deoarece dacă au chiar și o altă intrare în proxyAddresses (și toate conturile noastre au, cum ar fi adresele X500 și adresele onmicrosoft), se va potrivi cu asta și va returna obiectul. De asemenea, știu că aș putea face ceva de genul:
Get-AdUser -Filter * -Properties proxyAddresses |
Pentru fiecare-obiect -Începe { $filteredList = @() } -Proces {
$negăsit = $adevărat
$_.proxyAddresses | PentruFiecare-Obiect -Proces {
dacă ($_ -cum ar fi „smtp:*@domain.com”) {
$negăsit = $fals
}
}
dacă ($negăsit) { $filteredList += $_ }
}
Există vreo modalitate prin care pot face acest lucru într-un Where-Object FilterScript? adică, filtrați pe partea serverului și nu pe partea clientului? Am încercat asta pentru a vedea dacă aș putea inversa adevăratul/falsul de la „-like”, dar nu părea să funcționeze, încă am primit toate conturile:
Get-AdUser -Filter * -Properties proxyAddresses | Where-Object -FilterScript { dacă ($_.proxyAddresses -cum ar fi 'smtp:*@domain.com') { $false } else { $true } }
Vreo idee?