Export-Csv コマンドレットの使用

データを CSV ファイルに保存

Export-Csv コマンドレットを使用すると、データをコンマ区切り値 (CSV) ファイルに簡単にエクスポートできます。必要な操作は、Export-Csv に CSV ファイルへのパスを続けることのみです。たとえば、次のコマンドは Get-Process を使用して、コンピュータで実行されているすべての処理に関する情報を取得します。次に Export-Csv を使用してそのデータを C:\Scripts\Test.txt というファイルに書き出します。

Get-Process | Export-Csv c:\scripts\test.txt

結果のテキスト ファイルは次のようになります。

#TYPE System.Diagnostics.Process
__NounName,Name,Handles,VM,WS,PM,NPM,Path,Company,CPU,FileVersion,ProductVersion,Description,Product,BasePriority,
ExitCode,HasExited,ExitTime,Handle,HandleCount, Id,MachineName,MainWindowHandle,MainWindowTitle,MainModule,
MaxWorkingSet,MinWorkingSet,Modules,NonpagedSystemMemorySize,
NonpagedSystemMemorySize64, PagedMemorySize,PagedMemorySize64,PagedSystemMemorySize,PagedSystemMemorySize64,PeakPagedMemorySize,
PeakPagedMemorySize64,PeakWorkingSet,PeakWorkingSet64, PeakVirtualMemorySize,PeakVirtualMemorySize64,
PriorityBoostEnabled,PriorityClass,PrivateMemorySize,PrivateMemorySize64,PrivilegedProcessorTime,ProcessName,
ProcessorAffinity, Responding,SessionId,StartInfo,StartTime,SynchronizingObject,
Threads,TotalProcessorTime,UserProcessorTime,VirtualMemorySize,VirtualMemorySize64,EnableRaisingEvents, 
StandardInput,StandardOutput,StandardError,WorkingSet,WorkingSet64,Site,Container
Process,alg,110,33714176,3698688,1273856,5400,C:\WINDOWS\System32\alg.exe,"Microsoft Corporation",0.046875, 
"5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)",5.1.2600.2180,"Application Layer Gateway Service",
"Microsoft Windows Operating System",8,,False,,2140,110,788,.,0,,"System.Diagnostics.ProcessModule 
(alg.exe)",1413120,204800,System.Diagnostics.ProcessModuleCollection,5400,5400,1273856,1273856,65756,65756, 
1347584,1347584,3747840,3747840,35024896,35024896,True,Normal,1273856,1273856,00:00:00.0312500,alg,1,True,0,
System.Diagnostics.ProcessStartInfo,"5/19/2006 7:37:03 AM",,System.Diagnostics.ProcessThreadCollection,
00:00:00.0468750,00:00:00.0156250,33714176,33714176,False,,,,3698688,3698688,,

既定で、データは ASCII 形式で保存されます。それでは、Unicode 形式 (または UTF7 や UTF8) でデータを保存する場合はどうでしょうか。問題ありません。-encoding パラメータに目的の形式を続けるだけです。

Get-Process | Export-Csv c:\scripts\test.txt -encoding "unicode"

結果の CSV ファイルの最初の行には .NET オブジェクト型があることに気付かれたと思います。

#TYPE System.Diagnostics.Process

出力ファイルに .NET オブジェクトの型名を含めない場合、-notype パラメータを含めます。

Get-Process | Export-Csv c:\scripts\test.txt -notype

もう 1 つの便利なパラメータに -force があります。Test.txt が読み取り専用ファイルだとします。そのため、ファイルのコンテンツにアクセスはできますが変更できません。Export-Csv を使用してファイルのコンテンツを更新できるようになるまでは、この状態で問題ありません。テキストを読み取り専用ファイルにエクスポートしようとすると、次のような結果になります。

PS C:\Documents and Settings\gstemp> Get-Process | Export-Csv c:\scripts\test.txt
Export-Csv : パス 'C:\scripts\test.txt' へのアクセスが拒否されました。

このような場合に -force が役立ちます。-force をエクスポート コマンドに追加します。

Get-Process | Export-Csv c:\scripts\test.txt -force

この場合、Windows PowerShell はファイルから一時的に読み取り専用属性を取り除き、コンテンツを更新し、読み取り専用属性を再設定します。最終的な結果として、ファイルは更新されますが、Export-Csv が完了した後にファイルは読み取り専用のままです。

Export-Csv のエイリアス
  • epcsv

関連リンク