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

powershellmicrosoft technologiessoftware & coding更新于 2026/2/10 3:52:17

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

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

示例

$mypath = $MyInvocation.MyCommand.Path
Write-Output "脚本路径:$mypath"

输出

PS C:\WINDOWS\system32> C:\Temp\TestPS.ps1
脚本路径:C:\Temp\TestPS.ps1

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

Split-Path $mypath -Parent

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

示例

$ScriptName = $MyInvocation.MyCommand.Name
Write-Output "`n脚本名称 : $scriptname"

输出

PS C:\WINDOWS\system32> C:\Temp\TestPS.ps1
脚本名称:TestPS.ps1

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


相关文章