簡體   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