PowerShell 環境変数を扱いたい(一覧/登録/削除)
Windowsの環境変数を扱う方法をまとめました。
環境変数の種類
3種類の環境変数があります。
システム環境変数
すべてのユーザーが使用できる共通の環境変数
ユーザー環境変数
ユーザーが独自に持っている変数。同じPCでもログインユーザー毎に内容が変わる。
プロセス環境変数
プロセス毎に独自に持つことができる変数。プロセスが終了すると消える。一つのプロセス内で複数のプログラムを動作させるときに情報の受け渡しができる(ファイルで情報の受け渡しをするより楽)。
環境変数を呼び出す
環境変数を呼び出すには「$Env:」+「環境変数名」で呼び出せます。
例えばパソコン名ならこのように
$Env:COMPUTERNAME
PS C:\> $Env:COMPUTERNAME
HP-13BE-2XXX
登録済み環境変数の一覧を表示するにはこのコマンドレット
Get-ChildItem Env:
PS C:\> Get-ChildItem Env:
Name Value
---- -----
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Users\godaGo\AppData\Roaming
CommonProgramFiles C:\Program Files\Common Files
CommonProgramFiles(x86) C:\Program Files (x86)\Common Files
CommonProgramW6432 C:\Program Files\Common Files
COMPUTERNAME HP-13BE-2XXX
ComSpec C:\windows\system32\cmd.exe
DriverData C:\Windows\System32\Drivers\DriverData
HOMEDRIVE C:
...
例えばこんな使い方
環境変数の値がパスで、そのパスの下のファイル一覧
PS C:\> Get-ChildItem $env:CommonProgramFiles
ディレクトリ: C:\Program Files\Common Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/10/29 11:36 Adobe
d----- 2023/10/24 22:16 microsoft shared
d----- 2023/11/14 21:52 System
環境変数の作成
・ユーザー環境変数として保存
[Environment]::SetEnvironmentVariable("環境変数の名前", '環境変数の値', 'User')
・システム環境変数として保存(管理者として実行)
[Environment]::SetEnvironmentVariable("環境変数の名前", '環境変数の値', 'Machine')
・プロセス環境変数として保存
$env:環境変数名 = 環境変数の値
環境変数の削除
・ユーザー環境変数の削除
[Environment]::SetEnvironmentVariable("削除対象の環境変数名", '', 'User')
・システム環境変数の削除(管理者として実行)
[Environment]::SetEnvironmentVariable("削除対象の環境変数名", '', 'Machine')
・プロセス環境変数の削除
$Env:"環境変数名" = ""
環境変数の名前変更
Rename-Item -Path Env:"変更前の名前" -NewName "変更後の名前"
#PowerShell #環境変数 #Windows #コマンドレット #プログラミング初心者 #プログラミング学習
WEBAPIを使うプログラムを作ったんですけど、社内のみ利用なのでAPIキーを直書きしたんですよ。でも、あとでAPIキーの変更が必要になったとき、プログラムの再配布が面倒ですし、環境変数に置いた方がいいかと思いまして調べてみました。