Compare-Object приводит к неверным результатам - PullRequest
0 голосов
/ 02 января 2019

При попытке использовать Compare-Object для двух списков имен ПК, в результате получается список имен серверов из одного элемента и System.Object[] для другого.Оба элемента имеют строковый тип, поэтому я не уверен, почему это происходит.

Мои два списка имен: $SCC и $windowsWorkstations.Когда я запускаю $SCC, он возвращает список имен ПК.Когда я запускаю $windowsWorkstations.Name, он также возвращает список имен ПК.Оба типа String.

Для пояснения, $windowsWorkstations - это тип object, но $windowsWorkstations.Name - это тип String.

Compare-Object -ReferenceObject $SCC -DifferenceObject $windowsWorkstations.Name -IncludeEqual

Результатом является список, содержащийвсе имена ПК от $SCC с => в качестве бокового индикатора.Последний элемент в списке - System.Object[] с <= в качестве бокового индикатора.

InputObject     SideIndicator
-----------     -------------
PC53127         =>
System.Object[] <=

Примечание. Я сократил результат объекта сравнения, так как в $SCC имеется более 15 000 имен компьютеров.В качестве примера я использовал только 1.

Что могло бы сделать результат этого сравнения равным System.Object[]?Вы не можете сравнить psobjects?

1 Ответ

0 голосов
/ 03 января 2019

Вызов ToString() для объекта дает вам строковое представление этого объекта. Во многих случаях это строковое представление является просто именем типа объекта. В вашем конкретном случае $SCC представляется массивом объектов, поэтому при вызове ToString() вы получаете имя типа System.Object[].

Демонстрация:

PS C:\> <b>$v = Get-ChildItem</b>
PS C:\> <b>$v.ToString()</b>
System.Object[]

Если элементы $SCC являются строками, сравнение с вашим вопросом должно сработать. Просто не конвертируйте $SCC в строку первым.

Если элементы $SCC не являются строками, вам необходимо обновить свой вопрос, добавив больше информации о содержимом этой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...