确定当前PowerShell脚本位置的最佳方法是什么?每当我需要引用一个公共模块或脚本时,我喜欢使用相对于当前脚本文件的路径,这样,我的脚本总能找到库中的其他脚本。那么,确定当前脚本目录的最佳标准方法是什么?目前,我正在做:$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)我知道在模块(.psm1)中你可以使用它$PSScriptRoot来获取这些信息,但这不会在常规脚本(即.ps1文件)中设置。获取当前PowerShell脚本文件位置的规范方法是什么?
3 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
# This is an automatic variable set to the current file's/module's directory$PSScriptRoot
PowerShell 2
在PowerShell 3之前,没有比查询MyInvocation.MyCommand.Definition
常规脚本属性更好的方法了 。我在基本上每个PowerShell脚本的顶部都有以下行:
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
陪伴而非守候
TA贡献1757条经验 获得超8个赞
如果要创建V2模块,可以使用名为的自动变量 $PSScriptRoot
。
从PS>帮助automatic_variable
$ PSScriptRoot 包含正在执行脚本模块的目录。 此变量允许脚本使用模块路径访问其他路径 资源。
繁花不似锦
TA贡献1851条经验 获得超4个赞
适用于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}
添加回答
举报
0/150
提交
取消