По умолчанию механизм выполнения развертывает (или перечисляет ) все типы коллекций при подаче вывода в командлет dowstream
Однако ConvertFrom-Json
в версиях PowerShell до v6.x возвращает его результаты таким образом, что предотвращает их перечисление во время выполнения , поэтому следующий командлет в конвейере получает массив [object[]]
в виде отдельного элемента конвейера.
Это можно решить в количество путей:
- Вложите начальный конвейер:
(az container list -o json |ConvertFrom-Json) |Select Name,ProvisioningState
- Позвольте
ForEach-Object
развернуть массив при возврате:
az container list -o json |ConvertFrom-Json |ForEach { $_ } |Select Name,ProvisioningState
- Используйте промежуточную переменную (как вы уже нашли):
$containers = az container list -o json |ConvertFrom-Json
$containers |Select Name,ProvisioningState
- Обновите до новой версии PowerShell
- поведение по умолчанию было изменено в PowerShell [Core] 7.0
if($PSVersionTable['PSVersion'].Major -ge 7){
az container list -o json |ConvertFrom-Json |Select Name,ProvisioningState
}