繁体   English   中英

Powershell:比较数组中的多个值

[英]Powershell: Comparing multiple values in an array

我在Powershell中遇到了另一个棘手的问题。 我有约4000个条目的列表,其中有以下详细信息:

<Computername> | <Username> | <StartDate> | <LastDate> | <IDNum>
computer1      | jsmith     | 4/12/12     | 4/12/13    | 52648
computer1      | jsmith     | 4/12/12     | -          | 52649
computer1      | jsmith     | 4/12/12     | 8/7/13     | 52644
computer2      | hreid      | 2/5/12      | 8/5/13     | 52396
computer2      | hreid      | 4/10/12     | 5/18/13    | 52300
computer3      | mdrake     | 2/10/11     | 12/18/12   | 52590
computer3      | mdrake     | 5/10/11     | 3/20/12    | 52593

它是CSV,我正在尝试找到一种方法来比较Computername和LastDate字段,并吐出带有相关的computername值的最新行的列表。 我可以将CSV读入一个变量,但是在使用get-member值和每个循环时,我感到很费劲。

理想情况下,输出应如下所示:

<Computername> | <Username> | <StartDate> | <LastDate> | <IDNum>
computer1      | jsmith     | 4/12/12     | 8/7/13     | 52644
computer2      | hreid      | 2/5/12      | 8/5/13     | 52396
computer3      | mdrake     | 5/10/11     | 3/20/12    | 52593

有点复杂...我真的无法将其分解。 有什么帮助吗? 甚至关于如何开始编写脚本的想法...我在这里碰壁。

-更新-

谢谢雷纳特。 所以我发现我的来源清单显然要复杂一些。 它缺少列表中的一些计算机名称...此外,它还缺少一些lastdate条目。 因此,我需要更改原始列表,使其看起来像这样:

<Computername> | <Username> | <StartDate> | <LastDate> | <IDNum>
computer1      | jsmith     | 4/12/12     | 4/12/13    | 52648
computer1      | jsmith     | 4/12/12     | -          | 52649
computer1      | jsmith     | 4/12/12     | 8/7/13     | 52644
computer2      | hreid      | 2/5/12      | 8/5/13     | 52396
computer2      | hreid      | 4/10/12     | 5/18/13    | 52300
computer3      | mdrake     | 2/10/11     | 12/18/12   | 52590
computer3      | mdrake     | 5/10/11     | 3/20/12    | 52593
               | fmann      | 4/11/12     | 3/20/13    | 52342

我将尝试使用您的代码示例,看看我如何做。 我真的很烦这个源列表,因为我发现某些条目缺少所有东西……啊。

您可以按计算机名分组,然后为每个组按LastDate排序并选择最后一项。

您将不得不进行调整以满足您的格式需求,但是看起来像这样。

Import-Csv -Path .\computers.csv|
    group -Property Computername|
    foreach {
        $_.group|
            sort { try { [datetime]$_.LastDate } catch {} }|
            select -last 1
    }|
    Export-Csv -Path .\computers_LastDate.csv -NoTypeInformation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM