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

时间:2015-02-03 19:50:21

标签: powershell psake

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

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

现在,当我向Psake Properties执行'Write-Host $ Env:PWD'或'$ Env:PWD'之外的事情我实际上得到了我想要的东西但是当我尝试从属性中获取它时它返回$ PWD返回的内容,这是脚本的执行目录。

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

Properties {
    $baseDir = $Env:PWD # returns d:\projects\code\development\.tools
}

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

我试图在变量中存储正确的路径,但它确实没有用。

更新

花了几个小时后,我意识到它确实在工作!我正在打开和关闭该脚本并在某处放置一个抛出语句并忘记它就在那里!所以我认为Psake正在做一些奇怪的事情因为它不起作用但是Psake是纯粹的! ;)

因此,如果你想获得正在执行脚本的当前目录,那么$ Env:PWD似乎就这么做了! :)

2 个答案:

答案 0 :(得分:2)

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

Split-Path $myInvocation.MyCommand.Path

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

(Get-Item -Path '.\' -Verbose).FullName

答案 1 :(得分:0)

花了几个小时后,我意识到它实际上正在工作!我正在打开和关闭该脚本并在某处发出抛出声明并忘记它在那里!

因此,如果你想获得正在执行脚本的当前目录,那么$ Env:PWD似乎就这么做了! :)