簡體   English   中英

在Powershell中將CSV文件與-like進行比較

[英]Comparing csv files with -like in Powershell

我有兩個csv文件,每個文件都包含一個PATH列。 例如:

CSV1.csv

PATH,Data,NF
\\server1\folderA,1,1
\\server1\folderB,1,1
\\server2\folderA,1,1
\\server2\folderB,1,1

CSV2.csv

PATH,User,Access,Size
\\server1\folderA\file1,don,1
\\server1\folderA\file2,don,1
\\server1\folderA\file3,sue,1
\\server2\folderB\file1,don,1

我要嘗試做的是創建一個腳本,該腳本將基於CSV1中的路徑進行單獨的csv導出,以使新文件包含匹配的CSV2中的文件值。 例如,從以上結果中,我最終得到兩個結果:

result1.csv

\\server1\folderA\file1,don,1
\\server1\folderA\file2,don,1
\\server1\folderA\file3,sue,1

result2.csv

\\server2\folderB\file1,don,1

以前,當兩個值完全相同時,我使用腳本對此進行了限制:

$reportfile = import-csv $apireportoutputfile -delimiter ';' -encoding unicode
$masterlist = import-csv $pathlistfile

foreach ($record in $masterlist)
    {
    $path=$record.Path
    $filename = $path -replace '\\','_'
    $filename = '.\Working\sharefiles\' + $filename + '.csv'

    $reportfile | where-object {$_.path -eq $path} | select FilePath,UserName,LastAccessDate,LogicalSize | export-csv -path $filename
    write-host "     Creating files list for $path"  -foregroundcolor red -backgroundcolor white
    }

但是,由於兩個路徑值不同,因此不會返回任何內容。 我找到了一個-like運算符,但不確定如何在此代碼中使用它來獲得所需的結果。 where-object是一個過濾器,而-like最終返回true / false。 我在正確的軌道上嗎? 有解決方案的想法嗎?

這樣的事,也許嗎?

$ht = @{}
Import-Csv csv1.csv |
  foreach { $ht[$_.path] = New-Object collections.arraylist }

Import-Csv csv2.csv |
  foreach { 
            $path = $_.path | Split-Path -Parent
            $ht[$path].Add($_) > $null
          }

$i=1
$ht.Values |
 foreach { if ($_.count)
            {
             $_ | Export-Csv "result$i.csv" -NoTypeInformation
             $i++
            }
          }

我的建議:

$1=ipcsv .\csv1.CSV
$2=ipcsv .\csv2.CSV
$equal = diff ($2|select @{n='PATH';e={Split-Path $_.PATH}}) $1 -Property PATH -IncludeEqual -ExcludeDifferent -PassThru
0..(-1 + $equal.Count) | %{%{$i = $_}{
     $2 | ?{ (Split-Path $_.PATH) -eq $equal[$i].PATH } | epcsv ".\Result$i.CSV"
}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM