迹忆客 专注技术分享

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

获取 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

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

本文地址:

相关文章

在 Windows PowerShell 中获取命令行参数

发布时间:2024/03/04 浏览次数:358 分类:编程语言

本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。

Windows PowerShell 中的 Base64 编码

发布时间:2024/03/04 浏览次数:332 分类:编程语言

本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。

在 Windows PowerShell 中写入输出

发布时间:2024/03/04 浏览次数:259 分类:编程语言

本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。

在 PowerShell 中注释代码

发布时间:2024/03/04 浏览次数:363 分类:编程语言

本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便