2017-07-27 9 views
1

我有一組屬性(深度:1)的對象。如何輸出的對象爲字符串的格式是這樣的:如何輸出一個PS對象作爲自定義格式化的字符串

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

(上面是單線,但屬性值當然可以具有換行/回車等)

假設我不知道屬性名稱,他們可以改變。

謝謝!

回答

3

這實際上取決於你在瀏覽什麼對象。我在一個csv上測試了它,並且它工作得很好,儘管你可能想爲不同類型的對象做一些小的格式化。

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

例如,取決於你所看到的,當你做$csv | Get-Member,你可能要更改NotePropertyProperty或別的東西。這應該可能工作。

請注意,您還必須在兩處更改變量的名稱(當前爲$csv)。

+1

我還可以對meta powershell是如何評論嗎?我喜歡你如何做$ csv。$ _來通過一個變量來檢索屬性的屬性。 –

+1

如果用'-ExpandProperty Name'替換'-Property Name',則可以在'ForEach-Object'中使用'$ _'而不是'$ _。Name'。 – gms0ulman

+0

@MaximeFranchot我有一個簡單的「扁平」對象,主要是字符串屬性。使用你的代碼示例並將屬性名稱更改爲屬性我可以獲取屬性名稱,但不能獲取值。我顯然已將$ csv更改爲正確的變量名稱。 – Alex

相關問題