0

バイナリコマンドレットがありGet-CustomPSObjectます。私が次のようなことをするとき:

Get-CustomPSObject > a.txt

結果はプレーンテキストとして保存されます。つまり、Get-CustomPSObjectは正常に機能しています。

しかし、私が試してみると:

Get-CustomPSObject | Export-csv a.csv

a.csvファイルは次のようになります。

"Capacity","Count","IsReadOnly","IsFixedSize","SyncRoot","IsSynchronized"
"4","1","False","False","System.Object","False"

これらのフィールドはどれも私のPSObjectにはありません。彼らが何を表しているのか分かりません。何かご意見は?

4

2 に答える 2

2

Export-CSVヘッダーを作成するために受信した最初のオブジェクトを取得します。ほとんどの場合、Get-CustomPSOjbectは、保存しなかったオブジェクトを返すメソッド/コマンドレット/スクリプトを実行します。たとえば、次のようなものを使用します

get-childitem

ではなく

$files = get-childitem

Get-CustomPSObject関数内。

編集 さて、あなたはコマンドレットがバイナリコマンドレットです。重要な情報。私はこれの専門家ではないので、間違っている場合は訂正してください。

複数のオブジェクトを出力できるバイナリコマンドレットを作成する場合は、それらを1つずつ記述する必要があります。PowerShellの背後にある考え方の1つは、完全な配列を待たずにオブジェクトが到着したときにオブジェクトを使用できるパイプラインを使用することです。

バイナリコマンドレットの現在の「設計上の欠陥」のためExport-CSV、配列を(1つのアイテムとして)内部の要素ではなくcsvファイルにエクスポートしようとします。

これを使用します:

WriteObject(list/array of objects)

これは悪いです。すべてのオブジェクトを同時に出力します。

これを修正するには、「object-creation-loop」の最後でこれを実行します。

WriteObject(mycurrentobject) 

これはいい。パイプラインの使用を有効にすると、すべてのオブジェクトが作成時に1つずつ送信されます。Export-CSV次に、各オブジェクトを受け取り、それらをcsv形式に変換できます。

于 2013-03-14T08:18:51.497 に答える
1

>を使用する最初の例では、出力はPowershellフォーマットシステムを介して実行されますが、2番目の例ではexport-csvを使用します。

get-custompsobjectを見ると| gmコンソールに表示されない、またはテキストファイルに送信されない追加のプロパティが表示されるはずです。

export-csvの場合、select-objectを使用してどのプロパティをcsvファイルに送信するかを制御できます

get-custompsobjct | select-object column1, column2 | export-csv a.csv
于 2013-03-14T12:18:00.527 に答える