PowerShell中获取当前运行脚本路径的方法

在运行脚本的时候,有时候需要通过脚本文件所在位置的相对路径来做一些事,比如执行另一个脚本。以前在CMD时代,可以通过%~dp0来获取脚本所在的文件夹,那在PowerShell中要怎么做呢?

很简单,通过内置的$MyInvocation变量:

$x = $MyInvocation.MyCommand.Definition

此时$x的值是当前运行中的脚本的绝对路径,再用Split-Path取它的父路径就可以了:

$x = Split-Path -Parent $MyInvocation.MyCommand.Definition

这样$x的值就是脚本所在的文件夹了……