【发布时间】:2019-05-29 10:38:47
【问题描述】:
当尝试对两个 PC 名称列表使用 Compare-Object 时,结果是来自一个项目的服务器名称列表,而 System.Object[] 用于另一个。这两个项目都是字符串类型,所以我不确定为什么会这样。
我的两个列表名称是 $SCC 和 $windowsWorkstations。当我运行$SCC 时,它会返回一个 PC 名称列表。当我运行$windowsWorkstations.Name 时,它还会返回一个PC 名称列表。两者都是字符串类型。
澄清一下,$windowsWorkstations 是 object 类型,但 $windowsWorkstations.Name 是 String 类型。
Compare-Object -ReferenceObject $SCC -DifferenceObject $windowsWorkstations.Name -IncludeEqual
结果是一个列表,其中包含来自$SCC 的所有 PC 名称,=> 作为侧面指示符。列表中的最后一项是System.Object[],其中<= 作为侧面指示符。
注意我缩短了比较对象的结果,因为$SCC 上有 15,000 多个 PC 名称。我只以 1 为例。
什么会使这个比较的结果是System.Object[]?不能比较psobjects吗?
【问题讨论】:
-
指标显示
PC53127仅在$windowsWorkstations.Name集合中,而System.Object[]仅在$SCC集合中。所以……您是否已全面审查过该收藏的内容?看来你里面有些东西不是你所期望的...... -
这更有意义。我认为是 $windowsWorkstation 有问题,而不是 $SCC。我认为问题在于我在比较之前转换了 $SCC.ToString(),从而得到了 System.Object[]。你能比较一个 Object[] 和一个字符串吗?每次我尝试它,它都会开始运行并且永不停止。
-
如何获取列表的内容?
Get-Content/Import-Csv,ConvertFrom-*?您确实将.Name属性附加到$windowsWorkstations而不是$SCC -
@JK72 - 您需要查看
$SCC的结构。尝试通常的方法 - 首先将其提供给Get-Member并查看它。然后将$SCC[0]提供给Select-Object -Property *并查看结果。 otta 为您提供了您想要与其他集合中的字符串值进行比较的特定属性。
标签: powershell csv compare