web-dev-qa-db-ja.com

PowerShell 2のexport-csvを使用してファイルを追加するにはどうすればよいですか?

$filesremoved | export-csv -Path E:\Code\powershell\logs\filesremoved.txt -NoTypeInformation

私も試しました

$filesremoved | export-csv -Path E:\Code\powershell\logs\filesremoved.txt -NoTypeInformation -NoClobber

ファイルは毎回上書きされているようです。ファイルにコンテンツを追加し続ける方法はありますか?

エラーが発生します

Export-Csv : A parameter cannot be found that matches parameter name 'Append'.
4
software is fun

-AppendExport-Csvパラメーターは、PowerShell3.0まで存在しません。

PowerShell 2.0でこれを回避する1つの方法は、既存のCSVをインポートし、いくつかの新しい行を作成し、2つのコレクションを追加して、再度エクスポートすることです。たとえば、test.csvを想定します。

"A","B","C"
"A1","B1","C1"
"A2","B2","C2"

次のようなスクリプトを使用して、このCSVファイルにいくつかの行を追加できます。

$rows = [Object[]] (Import-Csv "test.csv")
$addRows = 3..5 | ForEach-Object {
  New-Object PSObject -Property @{
    "A" = "A{0}" -f $_
    "B" = "B{0}" -f $_
    "C" = "C{0}" -f $_
  }
}
$rows + $addRows | Export-Csv "test2.csv" -NoTypeInformation

このスクリプトを実行すると、test2.csvの内容は次のようになります。

"A","B","C"
"A1","B1","C1"
"A2","B2","C2"
"A3","B3","C3"
"A4","B4","C4"
"A5","B5","C5"
6
Bill_Stewart

何なのかわからない$filesremoved includeですが、PS2.0でCSV出力を追加するには、次のようなものを試すことができます。

$filesremoved | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Out-File -Append -FilePath "test2.csv"

Select-Object -Skip 1はヘッダーを削除するために使用されます。ただし、次のように、必要な列の順序、区切り文字、および場合によってはエンコードを指定する必要があります。

$filesremoved | Select-Object -Property Name, Date | ConvertTo-Csv -Delimiter ";"  -NoTypeInformation | Select-Object -Skip 1 | Out-File -Append -Encoding ascii -FilePath "test2.csv"
8
Frode F.

1つの可能性:

$CSVContent = $filesremoved | ConvertTo-Csv
$CSVContent[2..$CSVContent.count] | add-content E:\Code\powershell\logs\filesremoved.txt
0
mjolinor