迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

获取 PowerShell 脚本的当前位置

作者:迹忆客 最近更新:2024/02/29 浏览次数:

每当我们需要引用一个公共模块或脚本时,我们都希望使用相对于当前脚本文件的路径。这样,脚本总是可以在库中找到其他脚本。

在本文中,我们将讨论获取正在运行的 PowerShell 脚本的当前位置的不同方法。


使用 Split-Path Cmdlet 获取 PowerShell 脚本的当前位置

在 PowerShell 3 之前,没有更好的方法可以使用 Split-Path cmdlet 查询 MyInvocation.MyCommand.Definition 属性。

Split-Path -Parent $($global:MyInvocation.MyCommand.Definition)

Split-Path cmdlet 与 -Parent 参数一起使用以返回正在运行的脚本的当前目录。

值得注意的是,只有在保存的 PowerShell (.ps1) 文件中包含上述语法时,这才有效。在命令行中运行上述语法将返回一个 Null 异常。

还值得注意的是,在 PowerShell 的集成脚本环境 (ISE) 中将上述语法作为选择运行(作为选择运行或按 F8)将触发 ParameterArgumentValidationErrorNullNotAllowed 或 Null 异常。

解决此问题的简单方法是调用 $psISE 变量并获取 CurrentFile.FullPath 属性,然后你可以从那里获取脚本的当前位置。请记住,在 PowerShell ISE 中进行测试时最好使用此语法。

Split-Path $psISE.CurrentFile.FullPath

使用 $PSScriptRoot 变量获取 PowerShell 脚本的当前位置

如果你运行的是 PowerShell 版本 3 或更高版本,则引入了一个自动变量来存储当前文件或模块的目录。

$PSScriptRoot 变量返回运行脚本的目录值。

$PSScriptRoot

获取 Windows PowerShell 中的工作目录以获取 PowerShell 脚本的当前位置

既然我们已经讨论了如何获取脚本的当前位置,那么学习获取脚本的当前工作目录并没有什么坏处。

在 Windows PowerShell v2 中,$ExecutionContext 变量包含 EngineIntrinsics 属性。你可以使用此变量和属性来查找可用于 cmdlet 的执行对象,包括正在运行的 Windows PowerShell 脚本的当前工作目录。

$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('.\')

但是,如果你运行的是最新版本的 Windows PowerShell,则引入了一个单独的 cmdlet 以方便操作。我们可以使用 Get-Location cmdlet 并调用 Path 属性来获取脚本的当前工作目录。

(Get-Location).Path

上一篇:获取 PowerShell 版本

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Windows PowerShell 中终止脚本

发布时间:2024/02/29 浏览次数:91 分类:编程语言

本文将列举几种在 Windows PowerShell 中终止脚本的方法。本文将解释和定义所有几个命令,并引用示例脚本块来说明在何处使用它们。

PowerShell 中的布尔值

发布时间:2024/02/29 浏览次数:87 分类:编程语言

本文将解释什么是布尔值,以及我们如何在 Windows PowerShell 环境中使用它们。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便