私はConvertFrom-Json
でキャプチャしたいJSONを吐き出すpythonスクリプトを持っています。残念ながら、このスクリプトでは、実行する前に別のディレクトリに移動する必要があります。これを行うための慣習的なパワーシェルの方法は何ですか?
これは動作します:
$q = powershell.exe -Command "cd some\other\dir; python JsonMaker.py | ConvertFrom-Json"
これがそうであるように:
$cwd=Get-Location
cd some\other\dir
$q=python JsonMaker.py | ConvertFrom-Json
cd "$cwd"
しかし、現在の作業ディレクトリを変更すると、私にはdicey思える - Pythonスクリプトは、不正な形式のJSONを出力した場合、私は中に残されますどのようなsome\other\dir
? UNIXシェルスクリプトの世界で
、私は明らかに
(cd some/other/dir && python JsonMaker.py) | commandThatUsesJson
または$(cd some/other/dir && python JsonMaker.py)
とで入力を読み込むような何かをしたいです。しかし、UNIXのサブシェルは安価です。 PowerShellでは、私はサブシェルの開始に目立った遅れがあることを知っています。
Powershellの長年のユーザーがこれに似たアプローチは何ですか?
いくつかのメモ。 1)Powershellの現在の作業ディレクトリ(CWD)が必ずしもファイルシステムにあるとは限りません。 2)CWDはスコープの一部ではないので、CWDを復元するために子スコープの出口を使うことはできません。3) 'cd fileSystemPath -UseTransaction'(少なくともPS 3)が機能しないため、CWDを復元するためにトランザクションを使用することはできません。 4)pushd/popdは最高の選択肢のようです。 5) '-ErrorAction stop'を指定して' ConvertFrom-Json'を実行し、try/finallyに入れて、JSONの変換の問題から回復できることを確認することもできます。 –