環境変数にパスを追加

環境変数 PATH にパスを追加する関数

Function Append-Env-Path( [String] $path )
{
    # 指定されたパスが既に追加されているか確認するため正規表現パターンを生成
    # 正規表現にしているのは、先頭、末尾もしくは中間に追加されている事を特定するため
    # 以下のようにエスケープ
    #
    #     '\' → '\\'
    #     '.' → '\.'
    #     '+' → '\+'
    #     '(' → '\('
    #     ')' → '\)'
    #     '[' → '\['
    #     ']' → '\]'
    #
    $pattern = [Regex]::Replace($path, '[\\\.\+\(\)\[\]]', {'\' + $args.value})

    $strPattern = '(?:^|;)' + $pattern + '(?:;|$)'

    # 環境変数 PATH に指定されたフォルダ・パスが追加されているか確認
    if( $env:Path -cnotmatch $strPattern )
    {
        # 環境変数 PATH にフォルダ・パスを追加
        $env:Path += ';' + $path
    }
}

使用例(その1)

任意パスを追加
# パス C:\tools\bin を環境変数 PATH へ追加
Append-Env-Path C:\tools\bin

使用例(その2)

特定のコマンドレット(.PS1 ファイル)と同じ場所に格納している他コマンドレットを呼び出す
とあるコマンドレット(.PS1 ファイル)の内容
# 本コマンドレットを格納するパスを環境変数 PATH へ追加
# ※ $MyInvocation.PSCommandPath を関数の外からアクセスすると
#   $Null となるため関数内でアクセスする
Function Setup-Env-Path
{
    Append-Env-Path $MyInvocation.PSCommandPath
}

# 単純に呼び出す
Setup-Env-Path

# 本コマンドレット(.PS1 ファイル)と同じ場所に格納しているコマンドレットを呼び出す
. ExampleLib