获取执行脚本的当前目录,而不是脚本的当前执行目录

Eya*_*nik 2 powershell psake

我想获取执行脚本的当前目录,而不是脚本的当前执行目录。

该脚本位于 'd:\projects\code\development.tools' 中,我想要位于 'd:\projects\code\development\ace\ace.testing' 中的项目目录

现在,当我在 Psake Properties 之外执行“Write-Host $Env:PWD”或“$Env:PWD”时,我实际上得到了我想要的东西,但是当我尝试从 Properties 中获取它时,它会返回什么$PWD 返回,这是脚本的执行目录。

Write-Host $Env:PWD # returns d:\projects\code\development\ace\ace.testing

Properties {
    $baseDir = $Env:PWD # returns d:\projects\code\development\.tools
}
Run Code Online (Sandbox Code Playgroud)

我不确定这里发生了什么,但我无法弄清楚。

我试图将正确的路径存储在一个变量中,但它并没有真正起作用。

更新:

花了几个小时后,我意识到它确实有效!我正在断断续续地编写该脚本,并在某处放置了一个 throw 语句,却忘记了它在那里!所以我认为 Psake 正在做一些奇怪的事情,因此它不起作用,但是 Psake 是纯粹的!;)

因此,如果您想获取正在执行脚本的当前目录 $Env:PWD 似乎可以做到!:)

EBG*_*een 8

要获取正在执行的脚本的位置:

Split-Path $myInvocation.MyCommand.Path
Run Code Online (Sandbox Code Playgroud)

获取当前工作目录的路径:

(Get-Item -Path '.\' -Verbose).FullName
Run Code Online (Sandbox Code Playgroud)