如何在 PowerShell 中获取当前正在执行脚本的路径?


要获取脚本的完整路径,我们需要使用 **$myInvocation** 命令。这是一个自动变量,仅在执行脚本或函数时才会调用。

$MyInvocation.MyCommand.Path 命令用于获取脚本所在的完整路径,而 $MyInvocation.MyCommand.Name 用于获取脚本的名称。

示例

$mypath = $MyInvocation.MyCommand.Path
Write-Output "Path of the script : $mypath"

输出

PS C:\WINDOWS\system32> C:\Temp\TestPS.ps1
Path of the script : C:\Temp\TestPS.ps1

请注意,我们正在从 System32 目录运行上述脚本,输出路径为 **C:\temp**。要获取脚本目录,我们可以使用 Split-Path 命令。例如,

Split-Path $mypath -Parent

要获取脚本的名称,可以使用前面提到的 Name 属性。

示例

$ScriptName = $MyInvocation.MyCommand.Name
Write-Output "`nName of the script : $scriptname"

输出

PS C:\WINDOWS\system32> C:\Temp\TestPS.ps1
Name of the script : TestPS.ps1

当您直接从控制台运行上述命令时,它不会输出任何内容,因为 **$MyInvocation** 仅在调用脚本时才会产生输出。例如,

更新于: 2023年11月1日

40K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告