Странный вывод из того, что я ожидал. Как мне узнать, что я делаю не так?
Я пытаюсь найти Active Directory компьютеров, которые существуют в двух доменах, и найти неактивный между ними (тот, который вошел в систему с самым старым временем).
Далее сценарий, все компьютеры с меткой времени lastlogon и некоторыми другими свойствами перетаскиваются из Active Directory в массивы DomainAComputers и DomainBComputers; ниже необходимо выяснить, какую машину мы должны удалить.
# Match machines between domains to find duplicates - Works fine.
$Duplicates = $Computers | ? {($DomainAComputers.name -match $_.name) -and ($DomainBComputers.name -match $_.name)}
# Create a custom array with only the INACTIVE machine between the 2 domains
$DuplicateInactive = @()
# Loop through each machine
Foreach ($comp in $Duplicates){
$DomApc = $DomainAComp | ? {$_.name -eq $comp.name} #pull single comp entry from DomA array
$DomBpc = $DomainBComp | ? {$_.name -eq $comp.name} #pull single comp entry from DomB array
# Compare to see if DomA pc is not in use.
$DupDomAinactive = $DomApc | ? {$DomApc.lastlogontimestamp.DateTime -le $DomBpc.lastlogontimestamp.DateTime}
# Compare to see if DomB pc is not in use
$DupDomBinactive = $DomBpc | ? {$DomBpc.lastlogontimestamp.DateTime -le $DomApc.lastlogontimestamp.DateTime}
#output results to custom array
$DuplicateInactive += $DupDomAInactive
$DuplicateInactive += $DupDomBInactive
}
Проблема: если я сделаю запрос
$DomApc.lastlogontimestamp.DateTime -le $DomBpc.lastlogontimestamp.DateTime
, результат верный; и наоборот DomBpc -le DomApc
, он возвращает ложь.
(Например, DomA - 27/04/2018 4:22:37 PM is less than DomB - 7/05/2018 12:18:06 PM
- возвращает TRUE.)
Я бы тогда ожидал, что тот, который возвращает true, передаст свой результат обратно в $ DupDomAinactive и будет добавлен в $DuplicateInactive
, однако, похоже, это не так.
Из 54, $duplicateinactive.count
показывает 54, однако вывод $duplicateinactive
показывает около 10 записей (5 машин дважды). Я ожидал бы, что будет ровно половина, вернувшая истину, поэтому 27 результатов.
Что я делаю не так и есть ли намного более простой способ сделать это?