В этом конкретном примере вы можете легко получить то, что хотите, вставив их в свойство объекта. Для примера, давайте создадим массив с тремя тестами:
$tests = @($null,@(), @($null,$null))
function Write-Visible {
param($InputObject)
New-Object PSObject -Property @{ Object=$InputObject } |
Out-String | Out-Host
}
Конечно, Out-String | Out-Host
- это просто чтобы убедиться, что мы на самом деле не выводим объекты в конвейер, а ведем себя как Write-Host.
Итак, теперь мы можем запустить наши тесты:
PS> Write-Visible $tests[0]
Object
------
PS> Write-Visible $tests[1]
Object
------
{}
PS> Write-Visible $tests[2]
Object
------
{$null, $null}
Конечно, проблема в том, что он не очень хорошо работает с реальными объектами, потому что он превращает их в свойства объекта, где они визуализируются как "ToString ()" ... однако, вне вершины моя голова, я не могу думать, как вызвать магию рендеринга, которая происходит там без нового объекта.