2017-01-12 3 views
1

私は100以上の列を持つCSVを持っています。スクリプトを実行するときに、いくつかの列を選択したいときもあれば、すべての列が必要なときもあります。 |に書かれます|パイプで区切られたファイル。他の区切り文字を使用してImport-CSVから行のすべての列を取得

すべてのヘッダーを指定せずに完全な行を取得できるようにするImport-CSVのコマンド/プロパティはありますか?

私は以下のコードを試しましたが、私はすべての列をしたいときに行のパイプ。

# powershell -ExecutionPolicy ByPass -File .\test.ps1 -NoExit -AllColumns 
param(
    [switch]$AllColumns = $false 
) 
$writer = New-Object IO.StreamWriter('output.txt') 
Import-Csv 'test.csv' | ForEach-Object { 
    $writeLine = "" 

    if($_.("Name") -eq "John") { 
     if($AllColumns) { 

      #$writeLine = All Columns with '|' delimiter  
      foreach ($property in $_.PSObject.Properties) { 
       $writeLine = ($writeLine + $property.Value + '|') 
       # Or this - $writeLine = ($writeLine, $property.Value -join '|') 
      } 

     } else { 
      $writeLine = ($_.("Name"), $_.("Code") -join '|') 
     } 
    } 
    $writer.WriteLine($writeLine) 
} 

$writer.Close() 
+1

'インポートCsv'と'輸出CSV'はあなたではなくパイプ文字を使用することができます '-Delimiter'パラメータを持っています'-join'より – BenH

答えて

0

あなたはSelect-Objectコマンドレットを探していると思います。例の機能

Import-Csv -Path 'C:\2Users50columns.csv' ` 
| Select-Object -Property 'Name','Classification','Age' 

Name   : Esuriency 
Classification : Member 
Age   : 35 minutes ago 

Name   : Shawn 
Classification : Member 
Age   : 27 

だから、セレクト・オブジェクトを挿入します:

Import-Csv -Path 'text.csv' | Select-Object ... | Foreach-Object { 
関連する問題