This should be a simple task, but I have seen several attempts on how to get the path to the directory where the executed cmdlet is located with mixed success. For instance, when I execute C:\temp\myscripts\mycmdlet.ps1
which has a settings file at C:\temp\myscripts\settings.xml
I would like to be able to store C:\temp\myscripts
in a variable within mycmdlet.ps1
.
This is one solution which works (although a bit cumbersome):
$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$settingspath = $directorypath + '\settings.xml'
Another one suggested this solution which only works on our test environment:
$settingspath = '.\settings.xml'
I like the latter approach a lot and prefer it to having to parse the filepath as a parameter each time, but I can't get it to work on my development environment. What should I to do? Does it have something to do with how PowerShell is configured?
Best Answer
Yes, that should work. But if you need to see the absolute path, this is all you need: