ฉันกำลังพยายามรับรายชื่อบัญชี Active Directory ที่ไม่มีที่อยู่กับชื่อโดเมนที่กำหนดใน proxyAddresses ฉันรู้ว่าจะหาคนที่ใช่ ฉันทำได้:
Get-AdUser -Filter 'proxyAddresses -like ''smtp:*@domain.com'''
อย่างไรก็ตาม การย้อนกลับใช้ไม่ได้ เพราะหากมีรายการอื่นแม้แต่รายการเดียวใน proxyAddresses (และบัญชีของเราทั้งหมดมี เช่น ที่อยู่ X500 และที่อยู่ onmicrosoft) ก็จะจับคู่สิ่งนั้นและยังคงส่งคืนวัตถุ ฉันรู้ด้วยว่าฉันสามารถทำสิ่งต่อไปนี้ได้
รับ AdUser -Filter * -Properties proxyAddresses |
ForEach-Object - เริ่มต้น { $filteredList = @() } - กระบวนการ {
$notfound = $จริง
$_.proxyที่อยู่ | สำหรับแต่ละวัตถุ - กระบวนการ {
ถ้า ($_ -like 'smtp:*@domain.com') {
$notfound = $เท็จ
}
}
ถ้า ($notfound) { $filteredList += $_ }
}
มีวิธีที่ฉันสามารถทำได้ใน Where-Object FilterScript แทนหรือไม่ เช่น กรองฝั่งเซิร์ฟเวอร์มากกว่าฝั่งไคลเอ็นต์ ฉันได้ลองสิ่งนี้เพื่อดูว่าฉันสามารถย้อนกลับค่าจริง / เท็จจาก "-like" ได้หรือไม่ แต่ดูเหมือนจะไม่ได้ผล ฉันยังมีบัญชีทั้งหมดอยู่:
รับ AdUser -Filter * -Properties proxyAddresses | Where-Object -FilterScript { if ($_.proxyAddresses -like 'smtp:*@domain.com') { $false } อื่น { $true } }
ความคิดใด ๆ ?