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

问题描述 投票:4回答:2

如果我有一个PowerShell哈希对象,我怎样才能以可用于声明PowerShell哈希对象文字的格式输出它的内容?

举个简单的例子,假设您按如下方式初始化变量$ x:

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

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

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

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

powershell hash format
2个回答
4
投票

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

$x | ConvertTo-Expression
@{
        'c' = @{'foo' = 'bar'}
        'b' = 2
        'a' = 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
© www.soinside.com 2019 - 2024. All rights reserved.