如何将PowerShell哈希对象打印为哈希对象?

时间:2019-04-13 01:38:20

标签: powershell hash format

如果我有一个PowerShell哈希对象,如何以一种可以用来声明PowerShell哈希对象常量的格式输出其内容?

作为一个简单的示例,假设您按如下所示初始化变量$ x:

$x = @{
  a = 1
  b = 2
  c = @{
    foo = "bar"
  }
}

如果您仅输入$x,则将获得表格视图:

Name                           Value                                                                                                        
----                           -----                                                                                                        
c                              {foo}                                                                                                        
b                              2                                                                                                            
a                              1                                                                                                            

我知道还有其他格式化程序,但是我没有找到能将其格式化为漂亮打印的PowerShell文字的格式化程序,就像我上面的声明那样。

2 个答案:

答案 0 :(得分:4)

ConvertTo-Expression cmdlet可以将大多数(递归)对象序列化为PowerShell表达式:

$x | ConvertTo-Expression
@{
        'c' = @{'foo' = 'bar'}
        'b' = 2
        'a' = 1
}

答案 1 :(得分:0)

我不确定这是否是您的初衷,但是您始终可以使用{}表示法将变量声明为脚本块。然后,当您需要哈希表输出时,可以调用(&)脚本块。因此,当您输入$x时,您可以保留原始格式。

# Declaration
$x = {@{
a = 1
b = 2
c = @{
  foo = "bar"
}
}}

#Retrieval of $x contents
$x
@{
a = 1
b = 2
c = @{
  foo = "bar"
}
}

# Calling the scriptblock
& $x

Name                           Value
----                           -----
c                              {foo}
b                              2
a                              1