确定当前PowerShell脚本位置的最佳方法是什么?

确定当前PowerShell脚本位置的最佳方法是什么?

每当我需要引用一个公共模块或脚本时,我喜欢使用相对于当前脚本文件的路径,这样,我的脚本总能找到库中的其他脚本。

那么,确定当前脚本目录的最佳标准方法是什么?目前,我正在做:

$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)

我知道在模块(.psm1)中你可以使用它$PSScriptRoot来获取这些信息,但这不会在常规脚本(即.ps1文件)中设置。

获取当前PowerShell脚本文件位置的规范方法是什么?


繁星coding
浏览 1667回答 3
3回答

呼唤远方

PowerShell 3+# This is an automatic variable set to the current file's/module's directory$PSScriptRootPowerShell 2在PowerShell 3之前,没有比查询MyInvocation.MyCommand.Definition常规脚本属性更好的方法了 。我在基本上每个PowerShell脚本的顶部都有以下行:$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition

陪伴而非守候

如果要创建V2模块,可以使用名为的自动变量 $PSScriptRoot。从PS>帮助automatic_variable$ PSScriptRoot        包含正在执行脚本模块的目录。        此变量允许脚本使用模块路径访问其他路径        资源。

繁花不似锦

适用于PowerShell 3.0$PSCommandPath    Contains the full path and file name of the script that is being run.      This variable is valid in all scripts.那么功能是:function Get-ScriptDirectory {     Split-Path -Parent $PSCommandPath}
打开App,查看更多内容
随时随地看视频慕课网APP