2

これをcsvにエクスポートするときに長さしか取得できません。適切に行うにはどうすればよいですか。

$redo = Import-CSV c:\temp\testimport.txt | Group-Object email |
foreach {  "{0} ,{1}" -f $_.Name, (($_.Group | foreach { $_.group }) -join ', ')

}

$redo | Export-CSV c:\temp\test.csv -NoTypeInformation
#

「長さ」「46」「59」「110」「47」「149」「38」「69」「32」「62」「29」「49」「31」「27」「48」「55」「42」 "

4

3 に答える 3

4

Export-Csvコマンド パイプラインは文字列の配列を生成しますが、プロパティを持つオブジェクト (またはオブジェクトのリスト) が必要です。この配列をExport-Csvコマンドレットに入力すると、指定された各項目 (Length文字列のみ) のプロパティが取得され、それらのプロパティが出力ファイルに書き込まれます。

代わりに、目的のプロパティを持つオブジェクトのリストを作成する必要があります。たとえば、次のようになります。

Import-CSV c:\temp\testimport.txt `
  | Group-Object email `
  | select @{n="Name";e={$_.Name}},@{n="Group";e={($_.Group | %{$_.group}) -join ', '}} `
  | Export-CSV c:\temp\test.csv -NoTypeInformation
于 2013-03-20T21:48:22.420 に答える
0

これはまさに私が探していたものでした。だから私は、誰もが理解していることを確認するために私のコメントを追加するつもりです.


これは機能しません:

$str_list = @('Mark','Henry','John')
$str_list | Export-Csv .\ExportStrList.csv -NoType

Export-Csvオブジェクトを受け取り、プロパティを出力するためです。String[ ] の唯一のプロパティはLengthであるため、CSV ファイルには長さのみが含まれます。

これを修正するには、最後の人が言ったように、String[ ] を Object[ ] に変更する必要があります。最も簡単な方法は、を使用することSelect-Objectです。


次のように、各文字列を新しい Object[ ] の Name プロパティに入れます。

$str_list = @('Mark','Henry','John')
$str_list = $str_list | Select-Object @{Name='Name';Expression={$_}}
$str_list | Export-Csv .\ExportStrList.csv -NoType

繰り返しSelect-Objectますが、簡単に操作できるカスタム PSObject を出力します。これは非常に強力な情報です。賢く使用してください。

于 2014-07-16T12:29:10.467 に答える