2014-09-02 154 views
-1

我有兩個csv文件,我想檢查username.csv中的用戶與userdata.csv匹配,將
複製到output.csv。如果它不匹配在output.csv比較兩個csv使用powershell並返回匹配和不匹配的值

對於防爆獨自返回名稱:用戶數據包含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疑問,不顯示任何努力。請閱讀[help](http://stackoverflow.com/help/how-to-ask)瞭解如何提出一個智能問題的一些提示。 – vonPryz 2014-09-02 06:10:31

+0

閱讀關於[if語句]的幫助(http://technet.microsoft.com/zh-cn/library/hh847876.aspx)。 – vonPryz 2014-09-02 10:14:15

回答

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行會搜索用戶數據CSV,如果找不到匹配,則會將該用戶的用戶數據添加到輸出中,從而將用戶名添加到包含NA的輸出中。

不得不改變你的用戶列表CSV:

usernames 
Hari 
Rajesh 

預期輸出:

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

嗨丹尼恩,謝謝你的劇本,它完美的作品。但是,爲什麼if和elseif在我發佈的腳本中不起作用。它要麼多次返回名稱,要麼返回長度。再次感謝您的時間。 – user2670623 2014-09-03 05:12:54

+0

您的方法需要您檢查每個用戶名,並在每次匹配或不匹配時執行一些操作。我爲列表中的每個用戶發佈的一個用戶通過數據csv完成一個完整的循環。那麼只有一個檢查是用戶在循環中找到或沒有,並相應地進行處理。它更高效 – 2014-09-03 15:08:45

+0

感謝Dane。我已經接受了解決方案。 – user2670623 2014-09-04 04:57:16

相關問題