この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。PowerShellの環境変数とGet-Commandの公式仕様を基準に、User/Machine PATHを変更しない一時実験として構成しています。
検証ステータス:Microsoft公式仕様確認済み・Windows実機未確認
CLIを更新したら別バージョンが起動する――そんなとき、恒久PATHを触る前に現在のPowerShellだけで探索順を再現できます。
成功条件
自分で作ったA/Bの2ディレクトリに同名のテストコマンドを置き、PATH順を A→B から B→A へ変えると実行対象が切り替わることです。
$oldPath = $env:Path $env:Path = "C:\Temp\A;C:\Temp\B;$oldPath" Get-Command papanda-demo.cmd -All
Daily-Code版は$env:TEMPへ一時ディレクトリを自動作成するため、固定のC:\Tempを前提にしません。
ここを見る
Get-Command -All の Source を見ます。PATHの前方にある実行ファイルが候補順へ影響します。ただしPowerShellにはalias/function等を含むcommand precedenceもあるため、「PATHだけが全ルール」ではありません。
1か所変える
A;B を B;A へ入れ替えます。User/Machine PATHは変更せず、現在プロセスの $env:Path だけが変わります。
仕事で使うなら
Python、Git、Node.jsなどの新旧CLI比較や「どのexeが呼ばれているか」の切り分けに使えます。
セキュリティ上の注意
信頼できないディレクトリをPATH前方へ置くと、同名の偽コマンドを先に実行する危険があります。サンプルは自分で作った一時ディレクトリだけを使い、finallyでPATHとファイルを戻します。
