How to get the current directory of the cmdlet being executed

后端 未结 17 2218
滥情空心
滥情空心 2020-11-29 17:03

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,

17条回答
  •  -上瘾入骨i
    2020-11-29 17:41

    Most answers don't work when debugging in the following IDEs:

    • PS-ISE (PowerShell ISE)
    • VS Code (Visual Studio Code)

    Because in those the $PSScriptRoot is empty and Resolve-Path .\ (and similars) will result in incorrect paths.

    Freakydinde's answer is the only one that resolves those situations, so I up-voted that, but I don't think the Set-Location in that answer is really what is desired. So I fixed that and made the code a little clearer:

    $directorypath = if ($PSScriptRoot) { $PSScriptRoot } `
        elseif ($psise) { split-path $psise.CurrentFile.FullPath } `
        elseif ($psEditor) { split-path $psEditor.GetEditorContext().CurrentFile.Path }
    

提交回复
热议问题