这应该是一个简单的任务,但我看到了多个获取执行命令的目录路径的尝试,有些成功,有些失败。例如,当我执行 C:\temp\myscripts\mycmdlet.ps1
时,它在 C:\temp\myscripts\settings.xml
中有一个设置文件,我希望能够在 mycmdlet.ps1
中将C:\temp\myscripts
存储到一个变量中。
以下是一种可行的解决方案(虽然有点复杂):
$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$settingspath = $directorypath + '\settings.xml'
另一个人建议了这个解决方案,但只适用于我们的测试环境:
$settingspath = '.\settings.xml'
我非常喜欢后一种方法,比起每次解析文件路径作为参数,我更喜欢这种方法,但是在我的开发环境中,我无法使其工作。我应该怎么做?这与PowerShell的配置有关吗?