WSL を新規にインストールし、Azure CLI を実行したところ、「cli.azure.cli.core.azclierror: Operation returned an invalid status ‘Bad Request’」や他のエラーが発生し、実行することができないという事象が発生しました。
実行しているのは次のようなシンプルなコマンドだったのですが、これを実行するとエラーとなっていました。
rgName=$(az group show -n rg-AzureStackHCI-22H2-JapanEast --query "name" -o tsv) az group show --name $rgName --debug --verbose
デバッグ情報を出力すると、次のようなオプション指定で実行されていることが確認できました。
cli.knack.cli: Command arguments: ['group', 'show', '--name', 'rg-AzureStackHCI-22H2-JapanEast\r', '--debug', '--verbose']
シェル変数にリソースグループ名を格納して、その変数で後続のコマンドを実行しているのですが、変数に格納した情報に「\r」が含まれていることが原因のようでした。
なぜ、このような状態になっているのかが不明だったのですが X で以下のアドバイスをいただくことができました。
もしかしてですが、Windows にインストールされてる Azure CLI が動いてませんか?
以前どーしても一部のコマンドの文字列解釈が旨くいかなくて、Linux 版の Azure CLI をインストールしたらうまく行ったことがありまして・・・— ayuina@自宅警備員 (@ayuina) December 23, 2024
私が使用していた環境も、このアドバイスのとおりでして、WSL 側に Azure CLI をインストールしたと思っていたら、インストールしておらず、Windows 側でインストールした CLI が使用されていました。
WSL の 相互運用の設定 に記載されていますが、appendWindowsPath の設定がデフォルトで有効となっており、WSL では Windows の PATH の内容が含まれた状態となっています。
そのため、WSL でも Windows の Azure CLI のパスである 「/mnt/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2/wbin (
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin\az)」が PATH に含まれた状態となっており、Windows 側の az コマンドが使用されているという状態となっていたようでした。
WSL 側に Azure CLI をインストールし、「/usr/bin/az」を使用されるようにしたところ「\r」の制御コードが含まれなくなり期待した動作となりました。