PowerShell で記述したログイン スクリプトで問題が発生しています。ユーザー空間に環境パスを設定したい。最初に新しい変数を宣言し、最後にそれをパス変数に追加します。新しい変数は、パス内の値に展開されません。以下はコードです
アイデアは、ログインするたびに gat_path を更新することですが、パスは初回のみ更新します。GAT_PATH をパス変数に 1 回だけ追加します。この後、GAT_PATH を更新するたびに、パスは自動的に新しい値になります。
$gat_path="S:\common\tools\sqlite;"
[environment]::SetEnvironmentVariable("GAT_PATH",$gat_path,[system.environmentvariabletarget]::User)
$res=$env:path.ToLower().Contains("s:\common") # if gat_path already added, then dont add again.
IF($res -eq "True")
{
echo "GAT Path is already set."
}
ELSE
{
[environment]::SetEnvironmentVariable("PATH",$env:path+";%GAT_PATH%",[system.environmentvariabletarget]::User)
}
上記のコードでは、環境変数に GAT_PATH 変数が作成されていますが、パスの値は ですc:\python26\;%GAT_PATH%
。GAT_PATH
実際の値まで拡大しません。変数を使用してパスを設定する理由は、ログインするたびにこのスクリプトが実行されるためです。ログインするたびに最後にsqliteを追加し続けるため、パスの最後にsqliteパスを追加したくありません。スクリプトでいつでも GAT_PATH を更新できるようにしたいのですが、パスには GAT_PATH の新しい値が自動的に含まれている必要があります。
cannot
変数を使用せずにパスを直接設定するのと同じ問題が発生するため、次のことを行うことに注意してください。ログインするたびに、gat_path をパス変数に連結し続けます。
$gat_path="S:\common\tools\sqlite;"
[environment]::SetEnvironmentVariable("PATH",$env:path+";"+$gat_path,[system.environmentvariabletarget]::User)
powershellを使用してプログラムでパス変数を定義する際に変数を使用する正しい方法は何ですか?
よろしく、アロク