トピック about_Environment_Variables 簡易説明 Windows PowerShell で Windows 環境変数にアクセスする方法について説明します。 詳細説明 環境変数には、オペレーティング システムの環境についての情報が格納されます。この情報には、オ ペレーティング システムのパス、オペレーティング システムによって使用されているプロセッサの 数、一時フォルダーの場所などの詳細情報が含まれます。 環境変数に格納されているデータは、オペレーティング システムやその他のプログラムによって使用 されます。たとえば、環境変数 WINDIR には、Windows がインストールされているディレクトリの場 所が格納されています。プログラムは、この変数の値に対してクエリを実行し、Windows オペレーティ ング システム ファイルがある場所を判断できます。 Windows PowerShell では、Windows 環境変数を、レジストリに設定した変数および特定のセッション 用に設定された変数も含め、表示および変更できます。Windows PowerShell 環境プロバイダーを使用す ると、環境変数の表示および変更が容易になり、このプロセスが簡略化されます。 Windows PowerShell のその他の種類の変数とは異なり、環境変数とその値は子セッション (モジ ュール メンバーが実行されるローカル バックグランド ジョブおよびセッションなど) に継承されま す。そのため、環境変数は親セッションと子セッションの両方に必要な値の格納に適しています。 Windows PowerShell の環境プロバイダー Windows PowerShell の環境プロバイダーを使用すると、Windows PowerShell で Windows PowerShell ドライブ (Env: ドライブ) の Windows 環境変数にアクセスできま す。このドライブは、ファイル システム ドライブと同じように表示されます。Env: ドライブに移 動するには、次のように入力します。 set-location env: 次に、Env: ドライブの内容を表示するには、次のコマンドを入力します。 get-childitem Env: ドライブの環境変数は、その他の任意の Windows PowerShell ドライブから参照できま す。また、Env: ドライブに移動して、環境変数の表示や変更ができます。 環境変数オブジェクト Windows PowerShell では、各環境変数が System.Collections.DictionaryEntry クラ スのインスタンスであるオブジェクトによって表されます。 各 DictionaryEntry オブジェクトにおいて、環境変数の名前はディクショナリ キーです。環境変数 の値はディクショナリ値です。 Windows PowerShell の環境変数を表示するには、変数を表すオブジェクトを取得し、その後に オブジェクト プロパティの値を表示します。Windows PowerShell の環境変数を変更するとき は、DictionaryEntry オブジェクトに関連付けられているメソッドを使用します。 Windows PowerShell で環境変数を表すオブジェクトのプロパティとメソッドを表示するには、 Get-Member コマンドレットを使用します。 たとえば、Env: ドライブにあるすべてのオブジェクトのメソッドとプロパティを表示するには、 次のように入力します。 get-item -path env:* |get-member 環境変数の表示 名詞 Item を含むコマンドレット (Item コマンドレット) を使用して、環境変数の値の表示お よび変更を行うことができます。環境変数には子の項目がないため、Get-Item と Get- ChildItem の出力は同じです。 環境変数を参照するときは、Env: ドライブ名を入力した後に、変数の名前を入力します。たとえ ば、COMPUTERNAME 環境変数の値を表示するには、次のコマンドを入力します。 get-childitem env:computername すべての環境変数の値を表示するには、次のコマンドを入力します。 get-childitem env: 既定では、環境変数は取得された順序で表示されます。環境変数の一覧を変数名の順に並べ替える には、Get-ChildItem コマンドの出力を Sort-Object コマンドレットにパイプします。たと えば、任意の Windows PowerShell ドライブから、次のコマンドを入力します。 get-childitem env: | sort name Set-Location コマンドレットを使用して、Env: ドライブに移動することもできます。 set-location env: Env: ドライブから使用する場合は、パス内の Env: ドライブ名を省略できます。たとえば、すべ ての環境変数を表示するには、次のコマンドを入力します。 get-childitem Env: ドライブ内から COMPUTERNAME 変数の値を表示するには、次のコマンドを入力します。 get-childitem computername また、Windows PowerShell の式パーサーを使用すると、コマンドレットを使用せずに環境変数の 値を表示および変更できます。環境変数の値を表示するには、次の構文を使用します。 $env:<変数名> たとえば、WINDIR 環境変数の値を表示するには、Windows PowerShell コマンド プロンプトで次 のコマンドを入力します。 $env:windir この構文では、ドル記号 ($) は変数を示し、ドライブ名は環境変数を示しています。 環境変数の変更 環境変数に対する変更を保持するには、コントロール パネルの [システム] ([詳細設定] タブま たは [システムの詳細設定] 項目) を使用して、レジストリに変更を格納します。 Windows PowerShell の環境変数を変更した場合、その変更は現在のセッションのみに影響しま す。この動作は、Windows ベース環境での Set コマンドおよび UNIX ベース環境での Setenv コマンドの動作に似ています。 また、変数の値を変更するアクセス許可も必要です。適切なアクセス許可なしに値を変更しようとすると、 コマンドが失敗してエラーが表示されます。 次の構文を使用すると、コマンドレットを使用せずに変数の値を変更できます。 $env:<変数名> = "<新しい値>" たとえば、Path 環境変数の値に ";c:\temp" を追加するには、次の構文を使用します。 $env:path = $env:path + ";c:\temp" また、Set-Item、Remove-Item、Copy-Item などの Item コマンドレットを使用して、環境 変数の値の変更を行うこともできます。たとえば、Set-Item コマンドレットを使用して、 Path 環境変数の値に ";c:\temp" を追加するには、次の構文を使用します。 set-item -path env:path -value ($env:path + ";c:\temp") このコマンドでは値がかっこで囲まれているため、1 つの単位として解釈されます。 環境変数の変更の保存 すべての Windows PowerShell セッションで環境変数の値を作成または変更するには、 Windows PowerShell プロファイルに変更を追加します。 たとえば、すべての Windows PowerShell セッションで、C:\Temp ディレクトリを Path 環 境変数に追加するには、Windows PowerShell プロファイルに次のコマンドを追加します。 $env:path = $env:path + ";c:\temp" CurrentUser、AllHosts プロファイルなど、既存のプロファイルにコマンドを追加するには、 次のように入力します。 add-content -path $profile.CurrentUserAllHosts -value '$env:path = $env:path + ";c:\temp"' 設定を格納する環境変数 Windows PowerShell の機能は、環境変数を使用してユーザー設定を格納することができます。 これらの変数はユーザー設定変数のように機能しますが、変数が作成されたセッションの子セッ ションに継承されます。ユーザー設定変数の詳細については、「about_preference_variables」 を参照してください。 設定を格納する環境変数は次のとおりです。 PSModulePath 既定のモジュール ディレクトリへのパスを格納します。モジュールに対する完全なパスを 指定しない場合、Windows PowerShell は指定されているディレクトリにあるモジュールを探し ます。 $env:PSModulePath の既定値は、次のとおりです。 $home\Documents\WindowsPowerShell\Modules; $pshome\Modules Windows PowerShell は、"$pshome\Modules" の値をレジストリに設定します。 Windows PowerShell を起動するごとに "$home\Documents\WindowsPowerShell\Modules" の値を設定します。 また、Program Files ディレクトリなど、その他のディレクトリにモジュールをインス トールするセットアップ プログラムは、PSModulePath の値にインストール場所を追加します。 既定のモジュールのディレクトリを変更するには、PSModulePath 環境変数の値を変更します。 たとえば、PSModulePath 環境変数の値に "C:\ps-test\Modules" ディレクトリを追加する には、次のコマンドを入力します。 $env:PSModulePath = $env:PSModulePath + ";c:\ps-test\Modules" コマンドのセミコロン (;) は、一覧の新しいパスとその直前のパスとを区切ります。 値を変更するコマンドをプロファイルに追加するか、またはコントロール パネルの [シス テム] で、レジストリの PSModulePath 環境変数の値を変更しない限り、変更は現在のセッシ ョンにのみ影響します。 詳細については、「about_Modules」を参照してください。 関連項目 Environment (プロバイダー)