質問: UNIX の env コマンドのように環境変数を設定してプロセスを起動したいのですが、Windows PowerShell でこのようなことを実現するにはどうすればよいでしょうか? `Set-Item` コマンドを使えば環境変数を書き換えられるのはわかったんですが、これだとシェルそのものの環境が書き換わってしまうので、あとで元に戻す必要があって少し面倒です。 ### 追記 具体的には、特定の環境変数をセットした状態でユニットテストを起動したいと思っています。UNIX のシェルであれば、次のように書けます: `$ env NODE_ENV=test npm test` (この場合必ずしも env は必要ないですが。)
回答: PowerShellには環境変数を表す(仮想)ドライブEnvironmentプロバイダがあって、 `$env:name="BLUE"` のようにして、環境変数を設定できます。(`env:`がドライブ名で`$`は変数を表す、`name`は環境変数名) コマンドレットからは`$env:name` か `env:name`で参照できます。`$`が必要とされるかどうかはコマンドレットで異なります。 バッチにおける環境変数と同じでシェルの終了時には無効になります(起動プロセスで有効)