プログラマーな日々

I'm a Cloud Architect and Developer, and a trainee of the network engineer training course. I have certified by AWS and Cisco (SAA/SOA/DVA/CCNA). I especially have highly motivated to reduce toils.

【Powershell】jqでselectできない

以下の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'
"テスト"

牟田口さんに教えていただきました。感謝。