If the long command names bother you so much most have short aliases, but it's worth remembering that the short ones are cryptic and not that instructive if you're not already initiated.
`$someJsonText | convertfrom-json | % name`
the `| % [property name]` is shorthand for pulling out some root level property on an object in the pipeline
(just for reference; not really trying to prove any point)
What I personally like about PS in this case is that the syntax of the operation feels very consistent with the rest of powershell, but that's not a dig against jq (I use it a lot when I'm on macos); just my subjective impression, and not an objective claim of quality.
Get-Help ForEach-Object
...
ALIASES foreach %
The ForEach-Object cmdlet works much like the Foreach statement, except that you can't pipe input to a Foreach statement. For more information about the Foreach statement, see about_Foreach.
https://learn.microsoft.com/en-us/powershell/module/microsof...And another appears to be performance
PS /home/me> $time = (Measure-Command {
>> 1..1E4 | ForEach-Object {
>> $_
>> }
>> }).TotalMilliseconds
PS /home/me> [pscustomobject]@{
>> Type = 'ForEach-Object'
>> Time_ms = $Time
>> }
Type Time_ms
---- -------
ForEach-Object 144.558
PS /home/me> $Time = (Measure-Command {
>> ForEach ($i in (1..1E4)) {
>> $i
>> }
>> }).TotalMilliseconds
PS /home/me> [pscustomobject]@{
>> Type = 'ForEach_Statement'
>> Time_ms = $Time
>> }
Type Time_ms
---- -------
ForEach_Statement 17.621
https://devblogs.microsoft.com/scripting/getting-to-know-for...Though I was referring to the cmdlet, you're absolutely correct.