使用一个变量来使用powershell设置路径变量

时间:2012-05-28 09:38:02

标签: .net powershell environment-variables

我在使用PowerShell编写的登录脚本中遇到问题。我想在用户空间中设置environemtn path vairable。我首先声明一个新变量,然后将其添加到最后的路径变量中。新变量不会扩展到路径中的值。以下是代码

想法是每次登录时更新gat_path,但仅在第一次更新路径。仅将GAT_PATH附加到路径变量一次。在此之后每当我更新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变量是在environemnt变量中创建的,但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以编程方式使用变量来定义路径变量的正确方法是什么?

此致 阿洛克

1 个答案:

答案 0 :(得分:0)

您应该使用%GAT_PATH%

而不是$env:gat_path