背景
Windows Powershell を使う時に環境変数を使おうとしましたが、慣れていないので備忘録を残します。
前提条件
この記事は Windows 10 Pro 20H2 で確認しました。
Powershell のバージョンは 5.1 です。
PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.610
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.610
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
すべての環境変数を表示
環境変数の表示方法はいくつかありますが、代表的と思うものは以下になります。
PS C:\> Get-ChildItem env:
Name Value
---- -----
ALLUSERSPROFILE C:\ProgramData
...(省略)
コマンド長いっすね・・・コマンドプロンプトだったら set
で表示できるのになあ
一応 Powershell では Get-ChildItem
のエイリアスで dir
とか、 ls
があるようですが、dir env:
って、なんか馴染まないです。
名前を指定して環境変数を表示
名前を指定して環境変数を表示するには以下の様にして行います。
$env:<環境変数名> とします。
PS C:\> $env:ALLUSERSPROFILE
C:\ProgramData
環境変数を設定する
環境変数を設定するにあたっておさらいですが、種類が3つあります
- セッション環境変数
- ユーザ環境変数
- マシン環境変数
セッション環境変数は今開いている Powershell ウィンドウやスクリプトのみで有効な環境変数となります。
設定は以下の様にして行います。ここでは MYENV という環境変数に “my env” という値をセットしています。
PS C:\> $env:MYENV="my env"
ユーザ環境変数は、ユーザ単位の環境変数となります。ログインしているユーザによって別のものになります。
注意点としては、セッション開始時に読み込まれるので、一旦Powershell ウィンドウを閉じるか、別ウィンドウを開くと使えるようになります。
設定は以下の様にして行います。
PS C:\> [System.Environment]::SetEnvironmentVariable("USERENV", "user env", "User")
マシン環境変数は、マシン単位の環境変数となります。よってすべてのユーザ・セッションで有効になる環境変数になります。
注意点としては、設定には管理者権限が必要になるので、Powershell ウィンドウを管理者モードで開く必要があります。また、セッション開始時に読み込まれるので、一旦Powershell ウィンドウを閉じるか、別ウィンドウを開くと使えるようになりますが、きちんと反映させるためにはOS再起動をしたほうが無難です。
設定は以下の様にして行います。
PS C:\> [System.Environment]::SetEnvironmentVariable("MACHINEENV", "machine env", "Machine")
最後のパラメータが User
か Machine
で登録先が変わります。
コメント