PowerShellでスクリプトを作成する際、実行環境によって異なるパスや設定値に対応する必要がある場面は少なくありません。そんなときに役立つのが「環境変数」です。この記事では、PowerShellで環境変数を活用する方法と、そのメリットについて詳しく解説します。
環境変数とは?
環境変数とは、オペレーティングシステムやアプリケーションの動作に影響を与える、名前と値のペアで構成される情報です。代表的な例には、ユーザーのホームディレクトリを表す USERPROFILE や、一時フォルダのパスを示す TEMP などがあります。
PowerShellでの環境変数の参照方法
PowerShellでは、$env: プレフィックスを使って環境変数にアクセスします。たとえば、ユーザーのホームディレクトリを取得したい場合は以下のように記述します。
$homeDir = $env:USERPROFILE
Write-Host "ホームディレクトリ: $homeDir"
この方法を使えば、環境依存の値をコード内にベタ書きせずに済み、より柔軟なスクリプトが作成できます。
よく使われる環境変数一覧
環境変数名 | 内容 |
---|---|
USERPROFILE |
ユーザープロファイルのパス |
TEMP |
一時ファイルの保存先 |
USERNAME |
現在ログイン中のユーザー名 |
COMPUTERNAME |
コンピュータ名 |
APPDATA |
アプリケーションデータの保存先 |
環境変数の活用例 ログファイルの保存先を環境に応じて設定
以下は、実行ユーザーごとに異なるパスにログファイルを出力するスクリプト例です。
$logPath = "$env:USERPROFILE\logs"
if (-not (Test-Path $logPath)) {
New-Item -Path $logPath -ItemType Directory
}
$logFile = "$logPath\script.log"
"[$(Get-Date)] スクリプトを実行しました。" | Out-File -FilePath $logFile -Append
このように、環境変数を使えば特定のユーザーやマシンに依存しないスクリプトを実現できます。
環境変数の設定・変更方法
一時的に環境変数の値を変更することも可能です。たとえば、以下のように設定できます。
$env:MY_VARIABLE = "テスト値"
Write-Host $env:MY_VARIABLE
ただしこの設定は、現在のPowerShellセッションが終了すると元に戻ります。永続的に設定したい場合は、レジストリを変更するか、システム環境変数を編集する必要があります。
まとめ
環境変数を活用することで、PowerShellスクリプトはより柔軟で移植性の高いものになります。特定の環境やユーザーに依存しない記述を心がけることで、再利用性の高いスクリプトを構築することができます。今後のスクリプト作成時には、ぜひ $env: の利用を検討してみてください。