Как напечатать хеш-объект PowerShell как хеш-объект? - PullRequest
4 голосов
/ 13 апреля 2019

Если у меня есть хеш-объект PowerShell, как я могу вывести его содержимое в формате, который можно использовать для объявления литерала хеш-объекта PowerShell?

В качестве простого примера, скажем, вы инициализируете переменную $ xследующим образом:

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

Если вы просто введете $x, вы получите табличное представление:

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

Я знаю, что есть другие средства форматирования, но я их не нашелон форматирует его обратно в виде печатного литерала PowerShell, что-то вроде того, как я объявил выше.

Ответы [ 2 ]

4 голосов
/ 13 апреля 2019

Этот командлет ConvertTo-Expression может сериализовать большинство (рекурсивных) объектов в выражение PowerShell:

$x | ConvertTo-Expression
@{
        'c' = @{'foo' = 'bar'}
        'b' = 2
        'a' = 1
}
0 голосов
/ 13 апреля 2019

Я не уверен, что это именно то, что вы имели в виду, но вы всегда можете объявить вашу переменную как блок скриптов, используя нотацию {}. Затем вы можете вызвать (&) скрипт-блок, когда вы хотите получить хеш-таблицу. Поэтому, когда вы вводите $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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...