This JSON array converted to powershell object seems to be somehow get handled as single string when streamed to ForEach-Object.
"[1, 2, 3]" | ConvertFrom-Json | ForEach-Object {Write-Host "Number: $_"}
Prints:
Number: 1 2 3
Expecting:
Number: 1
Number: 2
Number: 3
Although: "[1, 2, 3]" | ConvertFrom-Json
prints:
1
2
3
I was of course trying to do something bit more complex with Azure CLI, but this was the problem that wasted me quite some time.
And actually setting parenthesis like this seems to work as I expect:
("[1, 2, 3]" | ConvertFrom-Json) | ForEach-Object {Write-Host "Number: $_"}
And outputs:
Number: 1
Number: 2
Number: 3
Is this a piping issue in powershell or do I just not understand piping in powershell.
My powershell version is as follows:
> $PSversionTable
Name Value
---- -----
PSVersion 5.1.22000.282
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22000.282
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1