Если ваш запрос без условий в предложении Where-Object
работает, то либо пользователь с такой комбинацией атрибутов либо отсутствует, либо вы ошибаетесь EmployeeNumber
с EmployeeID
.
Кроме того, получая все пользователей сначала получают всех своих свойств и отфильтровывают одного пользователя, которого вы ищете, что расточительно. Лучше использовать параметр -Filter
, который ускоряет процесс.
Что-то вроде:
foreach($object in $data) {
# check if you don't need the EmployeeID attribute instead of EmployeeNumber
$filter = "ObjectGUID -eq '$($object.GUID)' -and EmployeeNumber -eq '$($object.personID)'"
$ADuser = Get-ADUser -Filter $filter -Properties EmployeeNumber -SearchBase $object.ouPath -ErrorAction SilentlyContinue
if ($ADuser) {
# user found, do what needs to be done here. For demo, just output to console
$ADuser | Select-Object EmployeeNumber, SamAccountName, Enabled
}
else {
Write-Warning "Could not find user with ObjectGUID = '$($object.GUID)' and EmployeeNumber = '$($object.personID)'"
}
}