支持所有版本。
应避免在脚本中使用 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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
Invoke-Expression 内部执行的脚本也会受UAC的限制的,所以安不安全,全在用户本身的设置和习惯了。
也是,这种东西本不应该作为安全来讲,只是一种方法。把它当作多学习了一种方法最好。
但是参数里面含有变量,就得用它。