Set-Location 不会更新 $local:PSScriptRoot



是否可以更新$local:PSScriptRoot

在我的脚本中,我正在使用$local:PSScriptRoot,我希望它在Set-Location更改位置时更新。

Set-Location "./subfolder"
$local:PSScriptRoot

预期:

<$local:PSScriptRoot>/subfolder"

您知道如何更新$local:PSScriptRoot或者是否有更好的做法吗?

$psScriptRoot不是其值可以更改的变量;它在脚本调用时自动设置为要从中查询它的脚本文件位置的完整路径。 也就是说,如果您正在执行的脚本文件是/usr/local/scripts/pscore/get-data.ps1,则$psScriptRoot的值将设置为/usr/local/scripts/pscore,即使您使用Set-Location将当前工作目录设置为其他内容,您将无法更改它。

正如 Jeff Zeitlin 所解释的那样,自动变量$PSScriptRoot在调用脚本时会自动设置为脚本的位置。

您实际上正在寻找的是一个不同的自动变量:$PWD(PWD代表"打印工作目录"(,或者更具体地说,它的Path属性($PWD.Path(。工作目录是使用Set-Locationcmdlet 更改的内容。

最新更新