以下のjqコマンドはbashでは期待通りに動作します。
$ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == "テスト") | .name' "テスト"
Powershellでは、期待に反して、何も出力されません。
$ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == \"テスト\") | .name'
対応策
$OutputEncoding = [System.Text.Encoding]::UTF8
をjqの前に実行し、外部コマンドへの出力文字コードを変更します。
$ $OutputEncoding = [System.Text.Encoding]::UTF8 $ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == \"テスト\") | .name' "テスト"
牟田口さんに教えていただきました。感謝。
undefined