1

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 字段,并吐出带有关联计算机名值的最新行列表。我能够将 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

我将尝试使用您的代码示例,看看我是怎么做的。我对这个源列表感到非常恼火,因为我发现某些条目缺少各种东西......啊。

4

1 回答 1

5

您可以按计算机名分组,然后对于每个组,按 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
于 2013-08-09T19:18:28.927 回答