如何获取正在执行的cmdlet的当前目录?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

这应该是一个简单的任务,但我已经看到了几次尝试,如何获得路径到执行的cmdlet所在的目录,并取得了不同的成功。例如,当我执行c:\temp\myscript\mycmdlet.ps1(它在c:\temp\myscript\setings.xml上有一个设置文件)时,我希望能够将c:\temp\myscript存储在mycmdlet.ps1中的一个变量中。

这是一个可行的解决方案(虽然有点麻烦):

$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$settingspath = $directorypath + '\settings.xml'

另一个人提出了这个解决方案,它只适用于我们的测试环境:

$settingspath = '.\settings.xml'

我非常喜欢后者,而不是每次都将filepath解析为一个参数,但是我无法让它在我的开发环境中工作。

提问于
用户回答回答于

$MyInvocation.MyCommand.Path

使用相对路径将基于PowerShell中的$PWD、应用程序的当前目录或.NET API的当前工作目录。

用户回答回答于

是的,应该可以。但是,如果您需要查看绝对路径,则只需要以下内容:

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

扫码关注云+社区