2016-06-09 85 views
0

我想多参数传递给我的脚本块:传递多个参数在启动作业命令脚本块

$ConfigFile = @("C:\zip1.zip","C:\zip2.zip") 
$unzippath = "C:\" 
$ScriptBlock = { 
    param($ConfigFile,$unzippath) 
    $shell = new-object -com shell.application 
    $zip = $shell.NameSpace($ConfigFile) 
    foreach($item in $zip.items()) 
    { 
    $shell.Namespace($unzippath).copyhere($item) 
    } 
} 

Start-Job -Scriptblock $ScriptBlock -ArgumentList $ConfigFile,$unzippath 

但它的失败。有人能帮我吗?

+0

你这样做的权利。你会得到什么错误? –

+0

你的脚本没有'Start-Job'工作吗?我真的怀疑'$ shell.NameSpace'接受数组作为参数。 – PetSerAl

+0

如果我将$ ConfigFile作为单个路径而不是数组传递,它将起作用。但是,当我通过一个数组,它失败了.. – Sathish

回答

0

你做得对,$ConfigFile作为array通过。所以你的问题是不是关于传递参数scriptblock。它相当于如何使用Shell.application提取多个zip文件。

你可能有使用Foreach-Object命令的每一拉链遍历并解:

$ConfigFile = @("C:\zip1.zip","C:\zip2.zip") 
$unzippath = "C:\" 
$ScriptBlock = { 
    param($ConfigFile,$unzippath) 
    $ConfigFile | ForEach-Object { 
     $shell = new-object -com shell.application 
     $zip = $shell.NameSpace($_) 
     foreach($item in $zip.items()) 
     { 
      $shell.Namespace($unzippath).copyhere($item) 
     } 
    } 
    } 

    Start-Job -Scriptblock $ScriptBlock -ArgumentList $ConfigFile,$unzippath 
相关问题