如何在Powershell中将参数传递给Invoke-Expression?

时间:2015-10-19 03:40:09

标签: powershell

我有以下(不工作)poweshell脚本:

$scriptPath = ((new-object net.webclient).DownloadString('https://gist.githubus
ercontent.com/AndrewSav/c4fb71ae1b379901ad90/raw/23f2d8d5fb8c9c50342ac431cc0360ce44465308/SO33205298')); $args = "`"aaa
bbb`"";  iex $scriptPath $args

所以我是

  1. 下载脚本以执行。
  2. 设置我的参数列表以发送到脚本
  3. 执行脚本(对我来说,现在就在cli中)。
  4. 但是它出错了:

    Invoke-Expression : A positional parameter cannot be found that accepts argument '"aaa bbb"'.
    At line:1 char:209
    + ... 44465308/SO33205298')); $args = "`"aaa bbb`"";  iex $scriptPath $args
    +                                                     ~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Invoke-Expression], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeExpressionCommand
    

    任何人都可以帮我弄清楚如何将args传递给这个脚本吗?

    注意:此问题引自/ this other SO question生成。

1 个答案:

答案 0 :(得分:1)

你应该尝试这样的事情:

$scriptPath = ((new-object net.webclient).DownloadString('https://gist.githubusercontent.com/AndrewSav/c4fb71ae1b379901ad90/raw/23f2d8d5fb8c9c50342ac431cc0360ce44465308/SO33205298'))
Invoke-Command -ScriptBlock ([scriptblock]::Create($scriptPath)) -ArgumentList "coucou"

您必须在调用ScriptBlock之前创建一个ScriptBlock。