2017-07-27 10 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

相关问题