Write-Host
выполняет запись на хост (который обычно является консолью / терминалом), минуя поток вывода PowerShell, поэтому такая команда, как Write-Host $x | ConvertFrom-Json
, не имеет смысла потому что ConvertFrom-Json
будет получать без ввода .
Write-Host
записывает простые .ToString()
строковые нестроковых входных объектов в хоста, что означает, что вы не получаете богатого, удобного для пользователя форматирования вывода PowerShell, который неявный вывод или - редко необходимые - явные вызовы Write-Output
приводят к при конечной печати на хост по умолчанию , из-за к выходу не попадает ни в переменную, ни перенаправляется с помощью >
).
Invoke-RestMethod
автоматически анализирует вывод JSON, который он получает, в PowerShell пользовательских объектов ([pscustomobject]
экземпляров, поэтому также нет концептуальной причины для передачи значений его свойств в ConvertFrom-Json
- если API действительно не вернет вложенный JSON текст как * 10 37 * строковые значения в JSON, которые он возвращает.
Если вы хотите визуально проверить результаты, просто выведите их напрямую :
$x # output visualization of the whole object
$x.results # just the .results property
Вышеуказанный вывод в поток вывода успеха, что означает, что внешний вызывающий код вашего кода получит эти значения как часть вывода кода.
Если полученная таблица или Подобное списку форматирование (в зависимости от количества свойств) не говорит вам достаточно, вы можете преобразовать объекты обратно в JSON, добавив к ConvertTo-Json
. Обратите внимание, что глубина сериализации по умолчанию последнего ограничена 2, поэтому вам может потребоваться передать более высокое значение -Depth
, чтобы увидеть объект полностью - см. этот пост .
$x | ConvertTo-Json # use -Depth <n>, if needed.
$x.results | ConvertTo-Json
Если вы действительно хотите просто напечатать значения в виде информации для пользователя , не становясь частью вывода, используйте Out-Host
вместо Write-Host
, поскольку Out-Host
применимо богатое форматирование:
$x | Out-Host # print visualization of the whole object directly to the host
$x.results | Out-Host # just the .results property
# Ditto via ConvertTo-Json
$x | ConvertTo-Json | Out-Host
...