PowerShellで環境変数を取り扱う場合のメモ
ドキュメント
公式ドキュメントに環境変数についての資料が用意されており、ここを確認すればOK。
環境変数を参照する
PowerShellで環境変数にアクセスするには下記の記述でアクセスできます。
$Env:<variable-name>
下記は環境変数PATHを表示してみた例
ちなみに環境変数PATHはセミコロン(;)で区切られて連続しているので見づらいかと思うので、
下記のようにセミコロンでsplitして表示すると人間には見やすいと思います。
$env:PATH -split ";"
環境変数を作成・更新する(現在のコンソール)
$Env:<variable-name> = "<new-value>"
参照する際は$Env:<variable-name>
ででアクセスできましたが、= "<new-value>"
で新しい環境変数を作成できます
下記は環境変数Fooに値Barを設定して生成し、値HelloWorldに更新したケース
$Env:Foo = "Bar"
$Env:Foo
$Env:Foo = "HelloWorld"
$Env:Foo
環境変数を削除する(現在のコンソール)
環境変数は空の文字列を設定できないため、$null または 空の文字列設定すると環境変数は削除されます。
# 空文字を設定するパターン
$Env:<variable-name> = ""
# $nullを設定するパターン
$Env:<variable-name> = $null
下記は環境変数Fooを生成して、Get-Memberコマンドレットで環境変数が生成されている事を確認した後に、空文字を環境変数Fooに渡して環境変数を削除。
その状態で、Get-Memberコマンドレットを実行して、環境変数Fooが削除された事を確認している。
(環境変数Fooが削除されているので、Get-Memberコマンドレットで存在しないオブジェクトを指定した状態になってエラーになっている)
Itemコマンドレットを使用しても環境変数は更新できる(現在のコンソール)
$Env:<variable-name>
で環境変数の操作をしてきましたが。
下記のようにItemコマンドレットを利用して、それぞれ環境変数を操作できます。
- Get-Item で環境変数へアクセス
- New-Item , Set-Item で環境変数の生成
- Remove-Item で環境変数の削除
New-Item -Path Env:\Foo -Value 'Bar'
Get-Item -Path Env:\Foo
Get-Item -Path Env:\Foo | Get-Member -MemberType Properties
Remove-Item -Path Env:\Foo
Get-Item -Path Env:\Foo | Get-Member -MemberType Properties
環境変数を永続的に設定する
ここまでで説明した環境変数の設定について、全部、現在のコンソールと記載していましたが。
ここに記載している設定方法では、現在のコンソールに対して環境変数を追加、変更、削除できる方法となりあす。
このため設定変更したコンソールを閉じた場合、設定が消えてしまいます。
PowerShellで永続的な環境変数設定を行いたい場合は下記のいずれかで設定を行います。
- 起動プロファイル($Profile)で環境変数を起動時に毎回設定するようにする。
- SetEnvironmentVariable メソッドを使用して永続的な設定を行う
なおこちらの方法については、別記事にて説明します。
総評
PowerShellで環境変数を扱う際は、Envといったキーワードを知っていれば特に戸惑う事もないかと思います。