Первая публикация в stackoverflow, поэтому заранее прошу прощения, если я пропустил социальную норму.
У меня есть массив в PowerShell, в котором содержатся тысячи объектов. Стандартный материал, в котором каждый объект имеет такие свойства, как имя пользователя, время входа в систему, компьютер, на котором они зарегистрированы, и т. Д. c. Затем я отделил небольшое количество объектов из первого массива от пользователей, чье имя начинается с A:
$Array2 = $Array1 | where-object Username -like '*\a*'
Это работает, как и ожидалось.
Я хочу создать третий массив, который только содержит объекты из $ Array1, которых нет в $ Array2. Или, другими словами, массив только с пользователями, чьи имена не начинаются с A. Это похоже на go:
$Array3 = compare-object $Array1 $Array2 | select-object -expandproperty InputObject
Ожидание:
$Array3 | where-object Username -like '*\a*'
приводит к ничего не вернулось
Я получаю много результатов. Странно, если я смотрю на .count каждого массива, математика работает. Array1 минус Array2 равно Array3. Таким образом, он удаляет правильное количество объектов, но не ожидаемые объекты. Что я здесь не так делаю? Так как я делаю выборку из точного массива, с которым сравниваю, я не могу придумать никаких других критериев, поиск которых привел бы к неожиданному совпадению. Я также пытался отсортировать каждый массив по одному и тому же свойству перед сравнением, потому что я захватывал, но, как и ожидалось, это не исправило.
Заранее спасибо!