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

4
如果我有一个PowerShell哈希对象,如何以可用于声明PowerShell哈希对象字面量的格式输出其内容?
举个简单的例子,假设您初始化一个变量$x,如下所示:
$x = @{
  a = 1
  b = 2
  c = @{
    foo = "bar"
  }
}

如果您只输入$x,您将获得表格视图:
Name                           Value                                                                                                        
----                           -----                                                                                                        
c                              {foo}                                                                                                        
b                              2                                                                                                            
a                              1                                                                                                            

我知道还有其他格式化工具,但是我没有找到一个可以将其格式化为漂亮的 PowerShell 文本的工具,就像我上面声明的那样。


1
也许可以使用一种格式,将其转换为对象。例如:$x | ConvertTo-Json - Kory Gill
我的问题主要是关于输出格式的。下面的“ConvertTo-Expression”答案正是我在寻找的。 - Nimai
2个回答

4

这个ConvertTo-Expression命令可以将大部分(递归)对象序列化为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

听起来我需要澄清问题。我正在寻找一种以PowerShell哈希语法输出的方法。就像ConvertTo-Json但不是JSON格式,而是PowerShell哈希文字格式。 - Nimai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接