2013-08-09 3 views
1

Powershell에서 또 다른 까다로운 문제가 있습니다. 나는 다음과 같은 내용을 가지고 ~ 4000 개 항목의 목록을 가지고, 내가 가장의 목록을 컴퓨터 이름과 LastDate 필드를 비교하고 뱉어 수있는 방법을 찾기 위해 노력하고있어 Powershell : 배열의 여러 값 비교

<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

관련된 컴퓨터 이름 값을 가진 최근 행 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 

종류를 ... 난 정말 내 머리에이 분해 할 수 아니에요. 어떤 도움이 필요합니까? 아니면 어떻게 스크립팅을 시작할 수 있을지에 대한 아이디어 ... 여기 벽을 치고 있습니다.

- 업데이트

감사합니다. 그래서 나는 분명히 내 소스 목록이 좀 더 복잡하다는 것을 알았습니다. 목록에서 일부 컴퓨터 이름이 누락되었습니다 ... 또한 마지막 항목도 누락되었습니다. 그래서 더 같이 원래 목록을 변경해야합니다

<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 

난 당신의 코드 예제를 시도하고 내가 어떻게 볼 수 있습니다. 나는 몇몇 출품작에 대해 누락 된 모든 종류의 것들을 찾고 있기 때문에이 출처 목록에서 정말 화가났다.

답변

5

Computername으로 그룹화 한 다음 각 그룹에 대해 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