我有两个System.Data.DataRow对象数组,我想比较。

行有两列A和B.列A是一个键,我想找出哪些行的B列已更改,哪些行已添加或删除。

我如何在PowerShell中执行此操作?

===============>>#1 票数:4 已采纳

我写了一个脚本来做这件事一会儿。 脚本(Compare-QueryResults.ps1) 在这里可用,您还需要我的Run-SQLQuery脚本(可在此处获得 ),或者您可以使用您自己的脚本或函数替换它。

基本上,脚本所做的是获取每个查询的结果并将数据行分开,以便每个字段都是它自己的对象。 然后,它使用Compare-Object检查这些行中的数据之间的任何差异。 它返回一个比较对象,显示返回数据之间的所有差异。

结果是一个对象,因此您可以将它们保存到变量中,并使用Sort-Object或Format- * cmdlet。

祝好运。 如果你对脚本有任何问题,请告诉我,我很乐意引导你完成它们。 我一直在使用它们进行应用程序测试,看看程序中的不同操作正在修改哪些行。

===============>>#2 票数:1

要简单地比较两个System.Data.DataRow,您可以执行以下操作:

foreach ($property in ($row1 | Get-Member -MemberType Property)) {
    $pName = $property.Name

    if ($row1.$pName -ne $row2.$pName) {
        Write-Host "== $pName =="
        $row1.$pName
        $row2.$pName
    }
}

===============>>#3 票数:0

您需要两个DataRows数组吗? DataRow对象具有RowState属性,可以为您提供所需的属性。 请参阅MSDN文档: http//msdn.microsoft.com/

  ask by Magnus Lindhe translate from so

未解决问题?本站智能推荐:

2回复

Powershell:如何减少两个阵列的比较时间

我目前对PowerShell和Programming总体而言还很陌生。 我正在开发一个在PowerShell中使用的工具,该工具可以接收两个CSV文件,这些文件的范围从5,000-40,000行到每行30+个标题。 该工具获取这两个文件,并根据键(符号)查找匹配的行,并报告相应字段中的差异。
1回复

Powershell:比较数组中的多个值

我在Powershell中遇到了另一个棘手的问题。 我有约4000个条目的列表,其中有以下详细信息: 它是CSV,我正在尝试找到一种方法来比较Computername和LastDate字段,并吐出带有相关的computername值的最新行的列表。 我可以将CSV读入一个变量,但是在
2回复

将-like运算符与两个数组一起使用

我对PowerShell中的-like运算符有疑问。 脚本编写 我有以下变量。 这个变量可以包含Example; 我还有一个名为$ Exclusions的变量 我需要比较$ ProgramVar中的每个$ program,看看是否$ program像任何$
1回复

目录之间的PowerShell ForEach哈希比较

我正在研究比较两个目录的脚本。 我希望脚本在输出中显示两个主要内容-哪个文件存在于一个目录中,而不存在于另一个目录中,以及哪些文件出现在两个目录中,但它们之间存在差异。 匹配文件不需要显示。 之前我已经获得了一些有关如何实现此目标的建议,但是由于我对PS还是很陌生,因此在执行它时遇到了
1回复

比较2组对象属性,将属性添加到1个对象

我的第一个问题在这里。 我有一个包含2个对象数组的脚本,其中object1的1个属性与object 2的1个属性匹配。当这些属性匹配时,object1将基于object2的属性获得一个新属性。 属性的范围可以是5-20个左右,并且持有object1的数组可以轻松包含100个以上的对象,因此,
1回复

如何对现有名称进行数组排序并将这些名称中的对象添加到原始名称中

我目前在Powershell中有一个数组,为我提供了具有某些对象(信息)的用户列表。 某些用户有多个实例,但附加了不同的信息。 我想添加该信息,因此当我在数组中搜索某个元素/名称时,它将返回所有信息。 举例来说,我有三个array.name都等于John。 但是每个实例都有不同的地址
3回复

ACL“模糊”比较

我正在尝试将文件夹的ACL与ACL的引用集进行比较,然后列出所有例外。 等式的“模糊”部分是我希望能够忽略任何未知的SID。 因此,用我要测试的烫发创建参考文件夹在它和我的测试文件夹之间使用Compare-Object无效。 基本情况是我正在清理已删除实际用户帐户的旧用户目录(这是未解
1回复

将差异导出到CSV并与来自单独CSV PowerShell的列合并

基本上,我有一个CSV文件,该文件列出了目录的内容以分析是否缺少任何文件。 我的脚本可以执行此操作,但是我正在尝试将丢失文件的结果导出到新的CSV文件中。 当前脚本: 我得到的是: 它只会得到丢失的文件之一,而对于“ ID”列则什么也没有。 我希望能
1回复

基于第二个数组过滤一个数组?

我有两个数据数组: 我有一个查找数组: 我需要返回$arrnames中的元素,其中$arrnames中的匹配元素包含在$arrlookup 。 我一直在用foreach循环$arrnames $arrtypes索引查看$arrnames中的相同元素,但是它变得草率,而且我知道必
2回复

如何在PowerShell中比较两个csv文件而不指定属性

我有两个csv文件: 问题是如何比较Powershell中的文件。 我已经尝试过了: 结果是这两个文件相等。 如果我指定特定的属性,它将按预期工作,例如: 如何在不指定属性的情况下比较csv文件。 假设我想比较csv文件中的所有属性。