2014-09-02 2 views
-1

두 개의 CSV 파일이 있는데 username.csv의 사용자를 확인하려는 경우 userdata.csv와 일치합니다.
을 output.csv로 복사하십시오. 그것은 output.csv 예를 들어powershell을 사용하여 두 CSV를 비교하고 일치하는 값과 일치하지 않는 값을 반환합니다.

에 혼자 이름을 반환 일치하지 않는 경우 : 사용자 데이터는 3 열

UserName,column1,column2 
Hari,abc,123 
Raj,bca,789 
Max,ghi,123 
Arul,987,thr 
Prasad,bxa,324 

username.csv이

Hari 
Rajesh 

에게 Output.csv 포함해야 사용자 이름을

를 포함 포함

Hari,abc,123 
Rajesh,NA,NA 

어떻게 수행할까요? 감사합니다

죄송합니다.

$Path = "C:\PowerShell" 
$UserList = Import-Csv -Path "$($path)\UserName.csv" 
$UserData = Import-Csv -Path "$($path)\UserData.csv" 

foreach ($User in $UserList) 
{ 
    ForEach ($Data in $UserData) 
    { 
     If($User.Username -eq $Data.UserName) 
     { 
      # Process the data 

      $Data 
     } 
    } 
} 

이 값은 일치하는 값만 반환합니다. 출력물에 파일에 일치하지 않는 값을 추가해야합니다. 감사. 이 같은

+0

-1 질문에 대한 어떤 노력을 표시하지 않습니다

은 사용자 목록 CSV를 변경했다. 현명한 질문을하는 방법에 대한 도움말은 [help] (http://stackoverflow.com/help/how-to-ask)를 참조하십시오. – vonPryz

+0

[if 문] (http://technet.microsoft.com/en-us/library/hh847876.aspx)에 대한 도움말을 읽어보십시오. – vonPryz

답변

3

뭔가 작동합니다

$Path = "C:\PowerShell" 
$UserList = Import-Csv -Path "$($path)\UserName.csv" 
$UserData = Import-Csv -Path "$($path)\UserData.csv" 
$UserOutput = @() 

    ForEach ($name in $UserList) 
    { 

     $userMatch = $UserData | where {$_.UserName -eq $name.usernames} 
     If($userMatch) 
     { 
      # Process the data 

      $UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 =$userMatch.column1;column2 =$userMatch.column2} 
     } 
     else 
     { 
     $UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 ="NA";column2 ="NA"} 
     } 
    } 
$UserOutput | ft 

그것은 사용자 목록의 각 이름을 통해 반복합니다. 9 번째 줄에서는 일치하는 사용자 이름에 대해 userdata CSV를 검색합니다. 일치하는 사용자 이름이 없으면 출력에 해당 사용자의 사용자 데이터를 추가하고 두 열 모두에 NA가있는 출력에 사용자 이름을 추가합니다.

usernames 
Hari 
Rajesh 

예상 출력 :

UserName       column1       column2       
--------       -------       -------       
Hari        abc        123        
Rajesh       NA        NA 
+0

안녕 데인, 스크립트를 주셔서 감사합니다 완벽하게 작동합니다. 하지만 if 및 elseif가 내가 게시 한 스크립트에서 작동하지 않는 이유는 여러 번 또는 길이의 이름을 반환합니다. 다시 한 번 고마워요. – user2670623

+0

당신의 방법은 각 사용자 이름을 확인하고 매치가 있거나 매번 매번 뭔가를 할 것을 요구합니다. 목록에 각 사용자별로 게시 한 하나의 전체 루프는 데이터 CSV를 통해 수행됩니다. 그런 다음 루프에서 발견 된 사용자는 하나의 검사 일 뿐이며 처리하지 않습니다. 그것의 다만 더 –

+0

감사합니다 Dane. 나는 이미 그 해결책을 받아 들였다. – user2670623

관련 문제