PowerShellで環境変数(Environment Variables)を設定する方法について詳しく解説します。
環境変数を活用することで、システムやスクリプトの挙動を柔軟に制御できます。
環境変数の基本
環境変数は、OSやアプリケーションが動作する際に使用する設定情報を格納する特殊な変数です。
PowerShellでは、$env:
プレフィックスを使用して環境変数にアクセスします。
環境変数の取得
# 環境変数の取得
$env:PATH
$env:USERNAME
$env:COMPUTERNAME
環境変数の設定
PowerShellで環境変数を設定する方法はいくつかあります。
一時的に環境変数を設定する
以下の方法で環境変数を設定すると、現在のセッションのみで有効です。
# 一時的に環境変数を設定
$env:MY_VAR = "Hello PowerShell"
# 設定を確認
$env:MY_VAR
この方法では、PowerShellのセッションが終了すると環境変数はリセットされます。
永続的に環境変数を設定する
Windowsの環境変数には「ユーザーレベル」と「システムレベル」があり、レジストリを使用することで永続的に設定できます。
ユーザーレベルの環境変数を設定する
[System.Environment]::SetEnvironmentVariable("MY_VAR", "Hello Permanent", "User")
この方法では、ユーザーごとに適用されます。
システムレベルの環境変数を設定する
# 管理者権限で実行する必要があります
[System.Environment]::SetEnvironmentVariable("MY_VAR", "Hello System", "Machine")
この設定は、システム全体に適用されます。PowerShellを管理者として実行する必要があります。
環境変数を削除する
環境変数を削除するには、値を$null
に設定します。
$env:MY_VAR = $null
永続的な環境変数を削除するには、次のようにします。
[System.Environment]::SetEnvironmentVariable("MY_VAR", $null, "User")
または、レジストリを直接削除する方法もあります。
Remove-ItemProperty -Path "HKCU:\Environment" -Name "MY_VAR"
環境変数の一覧取得
環境変数の一覧を取得すスクリプトです。
# 環境変数の一覧を取得するスクリプト
Get-ChildItem -Path Env: | ForEach-Object {
[PSCustomObject]@{
Name = $_.Name
Value = $_.Value
}
} | Format-Table -AutoSize
このスクリプトを実行することで、システム内のすべての環境変数の名前と値が表形式で表示されます。
スクリプト解説
- Get-ChildItem -Path Env
Get-ChildItem
は、指定したパスの内容を一覧表示するコマンドです。-Path Env:
を指定することで、環境変数の一覧を取得します。Env:
は、環境変数を表すPowerShellのドライブ名です。
- ForEach-Object { … }
ForEach-Object
は、パイプラインに渡された各オブジェクトに対して処理を行うためのコマンドです。{ ... }
内のスクリプトブロックが、各環境変数オブジェクトに対して実行されます。
- [PSCustomObject]@{ Name = $.Name; Value = $.Value }
[PSCustomObject]
は、カスタムオブジェクトを作成するための型です。@{ Name = $_.Name; Value = $_.Value }
は、ハッシュテーブルを使って新しいオブジェクトを作成しています。Name
プロパティには環境変数の名前を、Value
プロパティには環境変数の値を設定しています。$_
は、パイプラインから渡される現在のオブジェクトを参照します。
- Format-Table -AutoSize
Format-Table
は、オブジェクトを表形式で表示するためのコマンドです。-AutoSize
オプションを付けることで、列幅を自動調整し、見やすい形式で表示します。
環境変数を操作するその他の方法
環境変数を一時的に追加(パスの追加)
$env:PATH += ";C:\MyNewPath"
環境変数をスクリプトで活用する
スクリプト内で環境変数を活用することで、設定を動的に変更できます。
if ($env:ENVIRONMENT -eq "Production") {
Write-Output "Production環境で実行"
} else {
Write-Output "開発環境で実行"
}
まとめ
PowerShellを使えば、一時的または永続的に環境変数を簡単に設定できます。
$env:
を使うと、一時的な環境変数の設定が可能[System.Environment]::SetEnvironmentVariable
を使うと、永続的に設定可能Get-ChildItem Env:
で既存の環境変数を一覧表示
環境変数を適切に設定することで、スクリプトの柔軟性やシステムの設定を効率的に管理できます。