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

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

4

1 回答 1

0

你做得对,并$ConfigFile作为array. 所以你的问题不在于将参数传递scriptblock. 而是关于如何使用Shell.application.

您可能必须使用Foreach-Object cmdlet遍历每个 zip并提取它:

$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
于 2016-06-09T05:08:33.147 回答