最佳答案
这应该是一个简单的任务,但是我已经看到过几次关于如何获取已执行cmdlet所在目录的路径的尝试,结果好坏参半。例如,当我执行C:\temp\myscripts\mycmdlet.ps1
时,它在C:\temp\myscripts\settings.xml
处有一个设置文件,我希望能够将C:\temp\myscripts
存储在mycmdlet.ps1
中的一个变量中。
这是一个有效的解决方案(尽管有点麻烦):
$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$settingspath = $directorypath + '\settings.xml'
另一个人建议这样的解决方案,它只适用于我们的测试环境:
$settingspath = '.\settings.xml'
我非常喜欢后一种方法,与每次都将文件路径解析为参数相比,我更喜欢这种方法,但我无法让它在我的开发环境中工作。我该怎么办?这与PowerShell的配置方式有关吗?