ハッシュテーブル値のプロパティをCSVファイルにエクスポートする

mutukrp

私は実行していますTest-AdfsServerHealth参照

問題は、出力値の1つ(値名Output)がとして表示される配列であり、System.Collection.Hashtableこれを適切なExcel形式で取得する方法を見つけようとしていることです。

たとえば、これは、エクスポートしたときのCSVの実際の値の1つです。

名前結果詳細出力
TestServiceAccountPropertiesパス "" System.Collections.Hashtable

しかし、PowerShellは次のように表示します。

名前:TestServiceAccountProperties
結果:パスの
詳細:
出力:{AdfsServiceAccount、AdfsServiceAccountDisabled、AdfsServiceAccountLockedOut、
                   AdfsServiceAccountPwdExpired ...} 
ExceptionMessage:

私が実行している実際のコマンドは次のとおりです。

$ServerResult = Test-AdfsServerHealth
mklement0

tl; dr

Test-AdfsServerHealth | 
  Select-Object Name, Result, Detail, @{ 
    n='Output'
    e={ $_.prop2.GetEnumerator().ForEach({ '{0}={1}' -f $_.Key, $_.Value }) -join ' ' } 
  } | ExportTo-Csv out.csv

上記は、各.Outputハッシュテーブルのエントリを<key>=<value>、CSV出力で適切に機能するスペースで区切られたペア(PSv4 +構文)で構成される1行の文字列にシリアル化します。


以来CSVは、テキスト形式PowerShellは、彼らの呼び出しによってエクスポートするオブジェクトをシリアライズ.ToString()する方法を

そのような複雑なオブジェクト[hashtable]のインスタンスは、多くの場合、ちょうど彼らの完全な型名を得(System.Collections.Hashtableのために.ToString()CSVに有用ではありません、。

簡略化された例(私はを使用ConvertTo-Csvしていますが、例はに類似して適用されますExport-Csv):

# Create a custom object whose .col2 property is a hashtable with 2 
# sample entries and convert it to CSV
PS> [pscustomobject] @{ prop1 = 1; Output = @{ name='foo'; ID=666 } } | ConvertTo-Csv

"prop1","Output"
"1","System.Collections.Hashtable"

からのすべての出力オブジェクトのプロパティにTest-AdfsServerHealth同じハッシュテーブル構造がある.Output場合は、エントリ列を独自に作成してハッシュテーブルフラット化することができますが、そうではないようです。

したがって、ハッシュテーブルを単一のCSV列に収まるテキスト表現に手動で変換する必要があります

これは、変換を実行Select-Objectする計算プロパティを使用して行うことができますが、CSVファイルのコンテキストで意味のあるテキスト表現を決定する必要があります。

次の例では、スペースで区切られた<key>=<value>ペアで構成される1行の文字列が作成されます(PSv4 +構文)。

[pscustomobject] @{ prop1 = 1; Output = @{ name='foo'; ID=666 } } | 
  Select-Object prop1, @{ 
    n='Output'
    e={ $_.prop2.GetEnumerator().ForEach({ '{0}={1}' -f $_.Key, $_.Value }) -join ' ' } 
  } | ConvertTo-Csv

計算されたprop2プロパティを作成するハッシュテーブル形式の説明については、私のこの回答参照してください

上記の結果:

"prop1","prop2"
"1","ID=666 name=foo"

ただし、ハッシュテーブルの値が、型名のみにシリアル化される複雑なオブジェクトである場合は、このアプローチを再帰的に適用する必要があることに注意してください


オプションの読み取り:ハッシュテーブルプロパティを個々の列にフラット化する

CSVファイルにエクスポートするオブジェクトのハッシュテーブル値のプロパティがすべて同じ構造である場合は、ハッシュテーブルエントリをそれぞれ独自の出力列することを選択できます

次のサンプル入力を見てみましょう。.prop2値が均一なキー(エントリ)のセットを持つハッシュテーブルである2つのカスタムオブジェクトのコレクション

$coll = [pscustomobject] @{ prop1 = 1; prop2 = @{ name='foo1'; ID=666 } },
        [pscustomobject] @{ prop1 = 2; prop2 = @{ name='foo2'; ID=667 } }

(関心のある)キー名が事前にわかっている場合は、計算されたプロパティの明示的なリストを使用して、個々の列を作成できます

$coll | select prop1, @{ n='name'; e={ $_.prop2.name } }, @{ n='ID'; e={ $_.prop2.ID } } |
  ConvertTo-Csv

上記の利回り、以下のハッシュテーブルのエントリは、独自の列になったことを示す、nameID

"prop1","name","ID"
"1","foo1","666"
"2","foo2","667"

キー名が事前にわからない場合は、より高度なテクニックが必要です

# Create the list of calculated properties dynamically, from the 1st input
# object's .prop2 hashtable.
$propList = foreach ($key in $coll[0].prop2.Keys) {
  # The script block for the calculated property must be created from a 
  # *string* in this case, so we can "bake" the key name into it.
  @{ n=$key; e=[scriptblock]::Create("`$_.prop2.$key") } 
}

$coll | Select-Object (, 'prop1' + $propList) | ConvertTo-Csv

これにより、計算されたプロパティの固定リストを使用して、前のコマンドと同じ出力が生成されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ハッシュテーブルをCSVにエクスポートする

分類Dev

テストファイルでディスクパーティションの不良ブロックをエミュレートする方法は?

分類Dev

ファイルをパブリックファイルシステムにエクスポートする

分類Dev

キーから値へのハッシュテーブルをcsvにエクスポート

分類Dev

キーから値へのハッシュテーブルをcsvにエクスポート

分類Dev

PowerShellを使用してcsvでファイルプロパティをエクスポートする方法

分類Dev

PowerShell を使用して AD ユーザーのプロパティを .csv ファイルにエクスポートする方法は?

分類Dev

ネストされたハッシュテーブルをPowerShellのcsvにエクスポートします

分類Dev

csvファイルのチェックボックス値をRubyon Railsのテーブルにエクスポートする方法は?

分類Dev

PowerShellハッシュテーブルをCSVにエクスポート

分類Dev

MySQLテーブルをCSVファイルにエクスポートする

分類Dev

オブジェクトのプロパティにハッシュテーブルを適用しますか?

分類Dev

GetEnumerator()を使用してハッシュテーブルをPowerShellのcsvファイルにエクスポートするにはどうすればよいですか?

分類Dev

samaccountnamesを使用して、ユーザープロパティ(主に名と姓のみ)をcsvファイルにエクスポートします

分類Dev

EntityFrameworkを使用してデータベース内のエンティティのハッシュテーブルプロパティを処理する方法

分類Dev

反応ネイティブ(エキスポ)プロジェクトからPHPサーバー(laravel)にファイルをアップロードする

分類Dev

大きなファイルをトークン化してJavaのハッシュテーブルにする

分類Dev

Hive:CSVファイルをHiveテーブルにロードするシェルスクリプト?

分類Dev

大きなテーブルをOracleのファイルにエクスポート/スプールする方法

分類Dev

nullのプロパティ(ハッシュテーブル)値を無視する

分類Dev

プロパティファイルのスプリングブートで「@」をエスケープする方法

分類Dev

テーブルをCSVファイルでエクスポートする

分類Dev

ハイブパーティティファイドテーブルの値をカウントする方法

分類Dev

jquery / javascriptを使用して、ドロップダウンリストを含むhtmlテーブルをCSVファイルにエクスポートします

分類Dev

エースエディタ:プッシュして次へ:ハイライトモードルールの「ポップ」プロパティ

分類Dev

ファイルをOCamlのハッシュテーブルに解析する

分類Dev

ソリューションファイル内のプロジェクトにMsBuildプロパティが設定されている場合、カスタムコンパイルエラーをスローする方法はありますか?

分類Dev

c#を使用してテキストファイルをハッシュテーブルに挿入する

分類Dev

アクティブストレージ:フォームが再表示されるときにアップロードされたファイルを保持/キャッシュするためのベストプラクティス

Related 関連記事

  1. 1

    ハッシュテーブルをCSVにエクスポートする

  2. 2

    テストファイルでディスクパーティションの不良ブロックをエミュレートする方法は?

  3. 3

    ファイルをパブリックファイルシステムにエクスポートする

  4. 4

    キーから値へのハッシュテーブルをcsvにエクスポート

  5. 5

    キーから値へのハッシュテーブルをcsvにエクスポート

  6. 6

    PowerShellを使用してcsvでファイルプロパティをエクスポートする方法

  7. 7

    PowerShell を使用して AD ユーザーのプロパティを .csv ファイルにエクスポートする方法は?

  8. 8

    ネストされたハッシュテーブルをPowerShellのcsvにエクスポートします

  9. 9

    csvファイルのチェックボックス値をRubyon Railsのテーブルにエクスポートする方法は?

  10. 10

    PowerShellハッシュテーブルをCSVにエクスポート

  11. 11

    MySQLテーブルをCSVファイルにエクスポートする

  12. 12

    オブジェクトのプロパティにハッシュテーブルを適用しますか?

  13. 13

    GetEnumerator()を使用してハッシュテーブルをPowerShellのcsvファイルにエクスポートするにはどうすればよいですか?

  14. 14

    samaccountnamesを使用して、ユーザープロパティ(主に名と姓のみ)をcsvファイルにエクスポートします

  15. 15

    EntityFrameworkを使用してデータベース内のエンティティのハッシュテーブルプロパティを処理する方法

  16. 16

    反応ネイティブ(エキスポ)プロジェクトからPHPサーバー(laravel)にファイルをアップロードする

  17. 17

    大きなファイルをトークン化してJavaのハッシュテーブルにする

  18. 18

    Hive:CSVファイルをHiveテーブルにロードするシェルスクリプト?

  19. 19

    大きなテーブルをOracleのファイルにエクスポート/スプールする方法

  20. 20

    nullのプロパティ(ハッシュテーブル)値を無視する

  21. 21

    プロパティファイルのスプリングブートで「@」をエスケープする方法

  22. 22

    テーブルをCSVファイルでエクスポートする

  23. 23

    ハイブパーティティファイドテーブルの値をカウントする方法

  24. 24

    jquery / javascriptを使用して、ドロップダウンリストを含むhtmlテーブルをCSVファイルにエクスポートします

  25. 25

    エースエディタ:プッシュして次へ:ハイライトモードルールの「ポップ」プロパティ

  26. 26

    ファイルをOCamlのハッシュテーブルに解析する

  27. 27

    ソリューションファイル内のプロジェクトにMsBuildプロパティが設定されている場合、カスタムコンパイルエラーをスローする方法はありますか?

  28. 28

    c#を使用してテキストファイルをハッシュテーブルに挿入する

  29. 29

    アクティブストレージ:フォームが再表示されるときにアップロードされたファイルを保持/キャッシュするためのベストプラクティス

ホットタグ

アーカイブ