问题标签 [compareobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
943 浏览

powershell - powershell比较对象输出问题

我通过运行下面的脚本并将结果写入文本文件来比较两个冗长的文本文件。我得到的不是预期的标准比较对象输出,而是它的一部分,其他所有内容都被修剪(由于最大字符限制或格式模板或其他原因)。任何想法如何将原始输出写入文件或增加一行中的字符限制以获得正确的结果?我比较的文件不能以任何方式缩短或重新格式化,也许我可以使用其他东西代替比较对象功能?

谢谢!

脚本:

输出:

0 投票
1 回答
1601 浏览

powershell - Powershell 比较对象输出每项 1 行

我试图把比较对象的输出。我是 Powershell 的新手,不幸的是还不知道来龙去脉。

我的命令如下:

我的文件内容如下(只是比较Windows服务):

我的比较对象结果如下:

现在,如果有人可以帮助输出保持每台服务器的前 2 列以及第 3,4 列到新列 (5,6) 的不同值。如果我也能获得头衔也很好。例如:

0 投票
2 回答
265 浏览

powershell - 比较 AD 计算机的两个 powershell 脚本的输出

我有两个 PS 脚本,一个从 Sharepoint 上的计算机列表中读取并输出结果,另一个从 Active Directory 输出计算机列表。

我需要做的是以某种方式比较这两个列表以查看:a)如果列表 A 的计算机未列在列表 B 中,b)如果列表 B 的计算机未列在列表 A 中

我假设这可能使用 Compare-Object cmdlet 和使用数组来实现,但我对 PS 并不太熟悉,也不知道从哪里开始。

要从 AD 获取计算机列表,我使用:

要从 Sharepoint 获取计算机列表,我使用:

0 投票
1 回答
139 浏览

c# - 比较类似于 Diff Tool 的两个类对象列表

问题移到这里

我的要求是编写一个模仿差异工具的程序。是的,有很多库和开源代码可以实现这个目的,但我想编写自己的比较器。

这是起点。我有一个名为 DataItem 的类,如下所示:

我有两个这些类对象的列表,我们称它们为 PRE 和 POST,并取一些示例值如下。“数据”部分在列表中将是唯一的。

将 PRE 视为原始列表,将 POST 视为完成一些更改后的列表。我想比较两者,并将它们分为三类:

  1. 已添加项目 - 将新“数据”添加到列表中的项目。
  2. 已移除项目 - 已从列表中移除项目。
  3. Diff Items - 在 PRE 和 POST 列表中都可以找到“数据”,但它们对应的“值”不同。

因此,分类时,它们应如下所示:

我有另一个 DiffItem 类,我想将最终结果放入其中的对象。DiffItem 看起来像这样:

为此,我首先扩展了 IEqualityComparer 并编写了几个比较器:

然后使用 except() 和 Intersect() 方法如下:

这确实有效并完成了工作。但我想知道是否有“更好”的方法来做到这一点。请注意,我在“更好”这个词周围加上了引号,因为我没有正确的定义来说明什么会使它变得更好。也许有没有办法在没有尽可能多的“foreach”循环和使用 except() 和 Intersetc() 的情况下完成这项工作,因为我想在 Linq 背后有相当多的迭代正在进行。

简而言之,有没有我可以为此编写的更简洁的代码?我主要是出于学术兴趣和扩展我的知识。

0 投票
0 回答
310 浏览

powershell - Compare-Object 传入 Get-ADUser 以获取 DisplayName

再会。我想要完成的是显示 DisplayName 和 Name,但我唯一可以显示的Compare-Object是 Name,所以我试图将输出传递Compare-ObjectGet-ADUser获取更多用户信息。下面是我正在使用的代码。

我得到的错误是

Get-ADUser:无法绑定参数“身份”。无法将值“@{Name= username }”转换为类型 Microsoft.ActiveDirectory.Management.ADUser

我知道这可能很简单,但我无法弄清楚。感谢您提供任何帮助。

0 投票
1 回答
2466 浏览

powershell - 比较对象并包含未在输出中比较的属性

Compare-Object我正在使用cmdlet比较来自不同来源(不同列/属性名称)的两个 CSV 文件。如何在输出中包含任一 CSV 文件中的属性而不将它们包含在比较中?

CSV 数据示例

用户1.csv

用户2.csv

以下为我提供了一个包含电子邮件地址和侧面指示符的列,但是在比较中如何获取$Users1.name$Users2.hiredate不使用它们?

我想要类似于以下的输出:

0 投票
2 回答
16538 浏览

java - 如何在 Java 8 中比较两个对象

让我们举个例子,您有两个具有相同值的员工对象,如下所示。

我想知道,还有其他更好的方法来比较 Java 8 中的对象吗?

0 投票
1 回答
2107 浏览

powershell - 比较对象返回错误的值

我正在处理 PowerShell 脚本,但Compare-Objectcmdlet 没有返回我所期望的。我不会把整个脚本放在这里,但这是一般的想法:

所以现在,我有两个排序的 PSCustomObjects 包含一组文件的名称、长度和上次写入时间。这是我无法弄清楚的。

如果对象相同,Compare-Object则不返回任何内容,如预期的那样。但是,使用下面的示例:

$knownFileObject看起来像这样:

$currentFileObject看起来像这样:

如果我跑

它会返回这个:

它肯定会检测到两个对象之间存在差异,但它总是只返回最后一行,而不是返回不同的实际记录。如果有两个更改的文件,则返回最后两行。如果我将 a 添加"-property Name"Compare-Object,它会返回正确的文件名,但我还需要查找大小和写入时间的差异。我可以使用Export-Csv将两个对象写回一个文件,然后Compare-ObjectGet-Content这些文件上运行,效果很好,但我不想将两个文件写入磁盘,因为这项工作将运行数百个每分钟在不同文件夹上的次数。

编辑:根据其中一个建议,我也尝试过Compare-Object ... -Property Name, Length, LastWriteTimeUtc,当我这样做时,它会返回两个对象中的每个项目,或者 100% 不匹配。

我究竟做错了什么?

0 投票
1 回答
1127 浏览

json - 基于其中的字段比较 Powershell 中的 2 个对象的对象。由 JSON 和 XML 填充的对象

为我缺乏 powershell 知识而道歉,因为我不是一个程序员,所以一直在寻找解决方案。

背景:

我目前正在尝试标准化 Incapsula 中的一些站点设置。为此,我想维护一个带有规则的本地 XML,并使用一些 powershell 来拉下现有规则并将它们与现有规则进行比较,以确保我不会加倍。我正在采用这种方法尝试仅将增量应用为:

  1. 对于大多数设置,incapsula 不够聪明,无法知道它已经存在
  2. 可以发布到 API 的内容与 API 返回的内容不同

例子:

以下是 API 将根据请求返回的示例,这是 JSON 格式。

这是带有我们特定站点设置的 XML 格式

我已经成功地能够使用 compare-object 命令将站点中的其他设置与 XML 进行比较,但是它们的嵌套更简单一些,并没有给我带来太多麻烦。我坚持这是逻辑问题还是比较对象的限制。下面是一个示例代码,它将要求将提供的 json 和 xml 保存为同一目录中的 stack.json/xml 并应产生上述结果:

这是一种工作,但不是我想要的。我确实得到了对象之间的比较,但没有得到特定 id 的比较,它向我显示了以下结果:

我更在哪里

希望这是有道理的。

是否可以仅对 id 匹配的值进行比较?

如果您有任何其他问题,请告诉我。

谢谢。

0 投票
1 回答
259 浏览

powershell - 比较对象的脚本块返回对象

我正在编写一个脚本来通过比较对象比较 2 个 samba 位置。

为了加快速度,我想通过一个线程将每个位置提供给一个脚本块,让我在其中制作对象。之后,我希望脚本块的输出作为对象在 Compare-Object cmdlet 中使用。

到目前为止我有什么:

所以仍然需要在某处添加它:

但是 test 和 test2 的结果是哈希表(我认为?)而不是对象。

任何输入将不胜感激我哪里出错了,或者我可以如何以不同的方式做