2017-07-27 12 views
1

プロパティ(深度:1)のセットを持つオブジェクトがあります。どのようにこのような形式の文字列として出力オブジェクトをしますPSオブジェクトをカスタム形式の文字列として出力する方法

{property1_name:property1_value} {property2_name:property2_value} {property3_name...

(上記は1行ですが、プロパティの値は、もちろん改行/キャリッジリターンなどを持つことができます)

はのは、と仮定しましょう私はプロパティの名前を知らない、彼らは変更することができます。

ありがとうございました!

答えて

3

これは実際にあなたが探しているオブジェクトに依存します。私はcsvでこれをテストしましたが、うまく機能しますが、別の種類のオブジェクトに対してマイナーな書式設定をしたいことがあります。例えば

$csv | 
    Get-Member | 
    Where-Object {$_.MemberType -eq "NoteProperty"} | 
    Select-Object -Property Name | 
    ForEach-Object { 
     "{" + $_.Name + " : " + $csv.($_.Name) + "}" 
    } 

、あなたが$csv | Get-Memberを行うときに表示内容に応じて、あなたはPropertyまたは何か他のものにNotePropertyを変更することがあります。これはおそらく動作するはずです。

変数名(現在は$csv)を2か所で変更する必要があることに注意してください。

+1

また、meta powershellの仕組みについてもコメントできますか? $ csv $ _を使ってプロパティの名前でプロパティを検索する方法がとても気に入っています。 –

+1

'-Property Name'を' -ExpandProperty Name'に置き換えると、 'ForEach-Object'で' $ _。Name'の代わりに '$ _'を使うことができます。 – gms0ulman

+0

@MaximeFranchot私は、ほとんどが文字列のプロパティを持つ単純な "フラット"オブジェクトを持っています。あなたのコード例を使用して、NotePropertyをPropertyに変更すると、プロパティ名は取得できますが、値は取得できません。私は明らかに$ csvを正しい変数名に変更しました。 – Alex

関連する問題