获取 PowerShell 脚本的当前位置
每当我们需要引用一个公共模块或脚本时,我们都希望使用相对于当前脚本文件的路径。这样,脚本总是可以在库中找到其他脚本。
在本文中,我们将讨论获取正在运行的 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
相关文章
在 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 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。