web-dev-qa-db-ja.com

PowerShellでCSVファイルに行を追加する

タイトル付きのcsvファイルに行を追加する方法を理解しようとしています。私は使用してコンテンツを取得します:

$fileContent = Import-csv $file -header "Date", "Description"

$File 戻り値

Date,Description
Text1,text2 
text3,text4

新しい日付と説明を含む行を追加するにはどうすればよいですか。申し訳ありませんが、Powershellは比較的初めてです。助けてくれる人に感謝

8
Ken

新しいカスタムオブジェクトを作成し、そのオブジェクト配列に追加しますImport-Csv作成します。

$fileContent = Import-csv $file -header "Date", "Description"
$newRow = New-Object PsObject -Property @{ Date = 'Text4' ; Description = 'Text5' }
$fileContent += $newRow
13
Andy Arismendi

PowerShellでファイルに単純に追加するには、add-contentを使用できます。

したがって、ファイルに新しい行のみを追加するには、次のことを試してください。$ YourNewDateと$ YourDescriptionには必要な値が含まれています。

$NewLine = "{0},{1}" -f $YourNewDate,$YourDescription
$NewLine | add-content -path $file

または、

"{0},{1}" -f $YourNewDate,$YourDescription | add-content -path $file

これは、.csvの末尾に新しい行をタグ付けするだけであり、ヘッダーを追加する必要がある新しい.csvファイルの作成には機能しません。

13
marceljg

これは古いスレッドであることは知っていますが、検索したときに最初に見つかったスレッドです。 + =ソリューションは私にとってはうまくいきませんでした。動作するようにしたコードは次のとおりです。

#this bit creates the CSV if it does not already exist
$headers = "Name", "Primary Type"
$psObject = New-Object psobject
foreach($header in $headers)
{
 Add-Member -InputObject $psobject -MemberType noteproperty -Name $header -Value ""
}
$psObject | Export-Csv $csvfile -NoTypeInformation

#this bit appends a new row to the CSV file
$bName = "My Name"
$bPrimaryType = "My Primary Type"
    $hash = @{
             "Name" =  $bName
             "Primary Type" = $bPrimaryType
              }

$newRow = New-Object PsObject -Property $hash
Export-Csv $csvfile -inputobject $newrow -append -Force

これを関数として使用して、一連の配列をループし、内容をCSVファイルに入力することができました。

Powershell 3以降で動作します。

5
corky