2017-11-22 19 views
0

PowerShellを使用している新規初心者ですが、その日の.vbsを使用してWSHを使用していたため、正しく質問できます。.CSVの行データに基づいて列を抽出する

行データが特定の値に等しい場合にのみ、.csvファイルからx個の列を抽出し、フィルタ処理したデータを別の宛先の新しい.csvに送信したいとします。

例として、保存されたWindowsイベントログを取って、列Aを抽出したいが、列 'A'が 'Error'と等しい行のみを抽出して、その出力を子ディレクトリの新しい.csvに送信する。

私はかなり近づいていると思いますが、カラムA〜Fを保存するだけで、必要なデータは表示されません。

誰でも私がこれを理解したり、どこに間違っているのかを教えてもらえますか?

$folderPath = 'C:\DLA\' 
$folderPathDest = 'C:\DLA\OUT\' 
$desiredColumns = 'A','B','C','D','E','F' 
$topics.Where({$desiredColumns.play -eq 'Error'}).topic 

Get-ChildItem $folderPath -Name | 
    ForEach-Object { 
     $filePath = $folderPath + $_ 
     $filePathdest = $folderPathDest + $_ 
     Import-Csv $filePath | Select $desiredColumns | Select $topics | 
     Export-Csv -Path $filePathDest –NoTypeInformation 
    } 

答えて

0

ちょうどあなたのパイプラインで直接フィルタを置く:

Import-Csv $filePath | Select $desiredColumns | where {$_.A -eq 'Error'} | Export-Csv -Path $filePathDest –NoTypeInformation 
関連する問題