Powershell慎用Invoke-Expression 2


支持所有版本。

应避免在脚本中使用 Ivoke-Expression,如果你的脚本中有一段字符串是命令,它将会执行它。很多情况下我们不需要用它,但是偶尔我们也需要它。

下面有一个例子:

function Test-BadBehavior($Path)
{
  Invoke-Expression "Get-ChildItem -Path $Path"
}

函数使用Invoke-Expression运行了一个带参数的命令,它将列出这个路径参数下的所有目录。

由于Invoke-Expression支持任何字符串。你可以让环境去注入攻击数据库,假设这样一个例子:

PS> Test-BadBehavior 'c:;Get-Process'  

现在将运行这两条命令同时列出所有进程。Invoke-Expression 通常被黑客利用,它通过链接下载恶意代码接着就可以在机器上执行。

当然,Invoke-Expression不是必需的,它几乎不用于生产上脚本,只要确保代码可以执行就行。

function Test-BadBehavior($Path)
{
  Get-ChildItem -Path $Path
} 

原文地址:Invoke-Expression is Evil

×用微信扫描并分享
本文链接: https://www.pstips.net/invoke-expression-is-evil.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

邮箱地址不会被公开。 必填项已用*标注

2 条评论 “Powershell慎用Invoke-Expression