トップ回答者
PowerShellでExport-csvを使用する際

質問
回答
-
Export-Csvコマンドレットというか、CSVフォーマットは、オブジェクトの階層構造を基本的には表現できません。
なので、Get-SPOUserの返すオブジェクトの持つプロパティのうち、階層構造を持つものがあれば、それをそのままCSVに書き出すことはできないので、階層構造の展開処理を入れてやる必要があると思います。
方法としてはいくつかあると思いますが、例えば、
Get-SPOUser | Select-Object プロパティ1,プロパティ2,@{Label="プロパティ3";Expression={$_.プロパティ3 -join ","}}|Export-csv "保存するcsvのパス"
のような書き方ができるかと思います。
(プロパティ3の値を展開する場合)なお、このように手動で展開処理を入れた場合、出力されたCSVから元のオブジェクト構造を再現するには、やはり手動での結合処理が必要になります。
もしくは、
Get-SPOUser | ConvertTo-Json | Set-Content "jsonのパス"のように、
CSVではなく、オブジェクトの階層構造を表現できるJSON形式で保存する方法もあるかと思います。
- 編集済み 牟田口大介Moderator 2016年3月30日 9:11
- 回答の候補に設定 kogesakaMVP 2016年3月31日 5:24
- 回答としてマーク Shunta Nakajima 2016年3月31日 8:06
すべての返信
-
Export-Csvコマンドレットというか、CSVフォーマットは、オブジェクトの階層構造を基本的には表現できません。
なので、Get-SPOUserの返すオブジェクトの持つプロパティのうち、階層構造を持つものがあれば、それをそのままCSVに書き出すことはできないので、階層構造の展開処理を入れてやる必要があると思います。
方法としてはいくつかあると思いますが、例えば、
Get-SPOUser | Select-Object プロパティ1,プロパティ2,@{Label="プロパティ3";Expression={$_.プロパティ3 -join ","}}|Export-csv "保存するcsvのパス"
のような書き方ができるかと思います。
(プロパティ3の値を展開する場合)なお、このように手動で展開処理を入れた場合、出力されたCSVから元のオブジェクト構造を再現するには、やはり手動での結合処理が必要になります。
もしくは、
Get-SPOUser | ConvertTo-Json | Set-Content "jsonのパス"のように、
CSVではなく、オブジェクトの階層構造を表現できるJSON形式で保存する方法もあるかと思います。
- 編集済み 牟田口大介Moderator 2016年3月30日 9:11
- 回答の候補に設定 kogesakaMVP 2016年3月31日 5:24
- 回答としてマーク Shunta Nakajima 2016年3月31日 8:06