每当我需要引用一个通用模块或脚本时,我喜欢使用相对于当前脚本文件的路径。这样,我的脚本总能在库中找到其他脚本。
那么,确定当前脚本目录的最佳标准方法是什么?目前,我正在做:
$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
我知道在模块 (.psm1) 中您可以$PSScriptRoot用来获取此信息,但在常规脚本(即 .ps1 文件)中没有设置。
$PSScriptRoot
获取当前 PowerShell 脚本文件位置的规范方法是什么?
PowerShell 3+
# This is an automatic variable set to the current file's/module's directory $PSScriptRoot
PowerShell 2
在 PowerShell 3 之前,没有比查询 MyInvocation.MyCommand.Definition通用脚本的属性更好的方法了。我在我拥有的每个 PowerShell 脚本的顶部都有以下行:
MyInvocation.MyCommand.Definition
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition