是否可以更新$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-Location
cmdlet 更改的内容。