如何在PowerShell中使用环境变量作为目录位置的开头?

时间:2014-06-20 11:52:12

标签: powershell cmd

我被同事给了一个powershell脚本来试图找出答案。我很少接受它,所以我被卡住了。

我们需要从.ps1文件中提取用户定义的cmdlet,形成驱动器的另一部分。

通常你会这样做:

    . .\scripts\thing.ps1

但是我们想在命令提示符中使用设置的环境变量来启动该位置。我们有类似的东西:

    . $Env:JobDir\scripts\thing.ps1

但是这会返回错误

    . : The term '\scripts\thing.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. 

无论如何要做出类似这样的工作吗?

2 个答案:

答案 0 :(得分:3)

您需要将其设为字符串,否则它会将整个路径解释为变量。

"$Env:JobDir\scripts\thing.ps1"

$Env:JobDir + "\scripts\thing.ps1"

答案 1 :(得分:1)

您可以这样做:

# build the path to the job  
$job = Join-path -Path $Env:JobDir -ChildPath "scripts\thing.ps1"

# execute the job
$job 

.$("$Env:JobDir\scripts\thing.ps1")