使用 PowerShell 调用表达式
Invoke-Expression
PowerShell cmdlet 在何时以及何时不使用时很容易被误解。本文将教我们 Invoke-Expression
是如何工作的,以及我们如何将它付诸实践。
PowerShell 中的 Invoke-Expression
Invoke-Expression
命令以脚本块的形式计算或运行特定字符串,并返回命令或表达式的结果。它可以帮助调用脚本中的代码,构建稍后执行的命令,或者通过用户提供的输入谨慎使用它。
Invoke-Expression
的一个示例是定义一个脚本并将该字符串传递给 Command
参数。
脚本示例:
$getProcess = 'Get-Process'
Invoke-Expression -Command $getProcess
$pathFile = '.\Test.ps1'
Invoke-Expression -Command $pathFile
如果你将路径项括在双 ""
或单引号''
中,并且整个字符串用引号引起来,Invoke-Expression
将按预期执行脚本。你还可以指示脚本文件的完整路径位置,如下例所示。
脚本示例:
$pathFile = "C:\'Folder Path'\Test.ps1"
Invoke-Expression $pathFile
在 PowerShell 中使用 Invoke-Expression
将参数传递给脚本
没有使用 Invoke-Expression
传递参数的本地方法,但我们可以将它们包含在你提供给 Command
参数的字符串中。我们可以通过提供参数将参数传递给该脚本,而不是通过 Invoke-Expression
使用参数。
我们必须将整行包含在一个字符串中,然后将该字符串传递给 Command
参数。
脚本示例:
$pathFile = 'C:\Scripts\Test.ps1'
$scriptParam = '-Path "C:\file.txt" -Force'
Invoke-Expression "$pathFile $scriptParam"
# or
$pathFile = 'C:\Scripts\Test.ps1 -Path "C:\test_file.txt" -Force'
Invoke-Expression $pathFile
Invoke-Expression
与 PowerShell 中调用运算符的区别
调用运算符 (&
) 用于执行脚本、脚本块或命令,但它不会像 Invoke-Expression
那样解释 command
参数。
例如,我们将使用 Get-Process -ProcessName pwsh
cmdlet 获取 PowerShell Core 进程。不幸的是,使用 call
运算符,连接 Get-Process
和参数将不起作用。
脚本示例:
$getProc = "Get-Process"
## The script below will not work
& "$getProc pwsh"
如果我们使用 Invoke-Expression
运行此字符串,该命令将执行,如下所示。
脚本示例:
Invoke-Expression "$getProc pwsh"
PowerShell 中 Invoke-Command
与 Invoke-Expression
的区别
Invoke-Expression
cmdlet 仅将字符串转换为可执行代码。相比之下,Invoke-Command
命令允许我们在远程或本地计算机上运行程序。
如果我们现在正在编写执行的命令,则最好使用 Invoke-Command
cmdlet,因为我们在 IDE 中保留了 IntelliSense,而如果我们想从当前脚本中调用另一个脚本,则 Invoke-Expression
会更好。
脚本示例:
## Invoke-Command
Invoke-Command -ScriptBlock {
Get-Process PowerShell
}
## Invoke-Expression
Invoke-Expression -Command "
Get-Process PowerShell
"
相关文章
在 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 过滤器。