迹忆客 专注技术分享

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

使用 PowerShell 调用表达式

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

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-CommandInvoke-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
"

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

本文地址:

相关文章

以管理员身份运行 PowerShell 脚本

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

本文将展示如何在不输入管理员凭据的情况下以管理员权限运行 powershell 脚本。如果代码片段未在提升的 Windows PowerShell 中运行,则以下脚本将自行提升你的脚本。

使用 Windows PowerShell 启动进程

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

本文将解释 Start-Process cmdlet 是什么以及参数如何与 cmdlet 一起使用。本文还展示了使用 Start-Process cmdlet 的好处

使用 PowerShell 远程处理执行命令

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

本文将讨论 PowerShell 远程处理的工作原理、几个 PowerShell 远程处理命令,以及我们如何将其投入实际使用。我们还将区分它与许多类似 cmdlet 的优势。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便