環境変数を取得する

基本

 環境変数は、$env:(環境変数名) で取得できます。たとえばPATHを取得するには次のようにします。

PS U:\> $env:Path
%SystemRoot%\system32\WindowsPowerShell\v1.0\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Document\EmEditor
PS U:\>

環境変数一覧

 .NET Frameworkを使用することで環境変数の一覧を取得することもできます。

PS U:\> [Environment]::GetEnvironmentVariables()

 実行結果は次のようになります。

PS U:\> [Environment]::GetEnvironmentVariables()

Name Value
---- -----
Path %SystemRoot%\system32\WindowsPow...
TEMP C:\Users\Hojo\AppData\Local\Temp
(以下略)

環境変数名だけを取得

 Keysプロパティを使用すると環境変数名だけを取得できます。

PS U:\> [Environment]::GetEnvironmentVariables().Keys
Path
TEMP
(以下略)

PATHを配列にいれる

 次のようにすると、PATHで指定されたそれぞれのパスを配列にできます。

PS U:\> $env:Path.Split(";")
%SystemRoot%\system32\WindowsPowerShell\v1.0\
C:\Program Files\Utility\Microsoft DirectX 9.0 SDK\Utilities\Bin\x86
C:\Windows\system32
(以下略)

環境変数PATHで、存在しないフォルダーを列挙する

 「PATHを配列にいれる」の結果を利用して、PATHで指定したフォルダーのうち、存在しないパスだけ列挙してみます。

PS U:\> $env:Path.Split(";") | ?{ (Test-Path $_) -eq $false }
%SystemRoot%\system32\WindowsPowerShell\v1.0\
PS U:\>

 このパスは存在するのですが、%SystemRoot%はコマンドプロンプト用の記述なので正しく処理できていません。これを正しく判定するには、$env:SystemRootを使って置き換えてやる必要があります。

inserted by FC2 system