0

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

想法是每次我登录时更新 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 变量是在环境变量中创建的,但 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以编程方式定义路径变量时使用变量的正确方法是什么?

问候, 阿洛克

4

1 回答 1

0

而不是使用%GAT_PATH%你应该使用$env:gat_path

于 2012-05-28T11:50:56.953 回答