PR

Powershellで環境変数を表示・設定

powershell PowerShell
記事内に広告が含まれています。

背景

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")

最後のパラメータが UserMachine で登録先が変わります。

コメント

タイトルとURLをコピーしました