如何在 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** 仅在调用脚本时才会产生输出。例如,
广告