为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

确定当前PowerShell脚本位置的最佳方法是什么?每当我需要引用一个公共模块或脚本时,我喜欢使用相对于当前脚本文件的路径,这样,我的脚本总能找到库中的其他脚本。那么,确定当前脚本目录的最佳标准方法是什么?目前,我正在做:$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)我知道在模块(.psm1)中你可以使用它$PSScriptRoot来获取这些信息,但这不会在常规脚本(即.ps1文件)中设置。获取当前PowerShell脚本文件位置的规范方法是什么?
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

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脚本的顶部都有以下行:

$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition


查看完整回答
反对 回复 2019-07-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

如果要创建V2模块,可以使用名为的自动变量 $PSScriptRoot

从PS>帮助automatic_variable

$ PSScriptRoot
       包含正在执行脚本模块的目录。
       此变量允许脚本使用模块路径访问其他路径
       资源。


查看完整回答
反对 回复 2019-07-25
?
繁花不似锦

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}


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 1666 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信