【发布时间】:2017-06-23 14:10:17
【问题描述】:
我正在尝试比较两个名为“name”的对象属性,它们包含相同类型的数据,在本例中为服务器主机名。对象不相同 AKA 不具有相同的属性。简而言之,我正在尝试比较两个服务器名称列表并确定它们从哪里(哪个对象)丢失。
我正在寻找每个对象中缺少的项目(服务器主机名)。当找到某些东西时,我希望在找到它的给定对象中获取该项目的所有相关属性。我可以成功地进行比较对象,但不知道如何获得我正在寻找的结果.
我认为可以为每个对象创建两个新对象,列出在另一个对象中找不到的项目?或者我是否以某种方式使用 compare-object 的输出引用以前的对象并产生一些格式化的输出?
此代码当前生成一个空白文件。
数据格式:
$SNObject:
名称、IP、类别
server-place.com,10.10.10.10,windows 服务器
$QRObject:
名称、日期、IP、通用、设备类型
server-place1.com,11.11.11.11,随机信息,linux服务器
代码示例:
$compare = compare-object $SNObject $QRObject -property Name |
foreach {
if ($_.sideindicator -eq '<=')
{$_.sideindicator = $PathToQRReport }
if ($_.sideindicator -eq '=>')
{$_.sideindicator = $PathToSNReport}
}
$compare |
select @{l='Value';e={$_.InputObject}},@{l='File';e={$_.SideIndicator}} |
Out-File -FilePath C:\Temp\MissingOutputs1.txt
【问题讨论】:
-
我相信正在发生的事情是,在您的 foreach-object 循环中,您正试图为不存在的对象($_.sideindicator)上的属性分配一个值,并且也没有发出您的 $compare 变量赋值的其他任何内容,这就是它为空的原因。循环后检查 $compare 以确认。
标签: arrays powershell object