Передача нескольких аргументов в блок скриптов в команде Start-Jobs

Я пытаюсь передать несколько аргументов в мой блок скриптов:

$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

Но его провал. Кто-нибудь может мне помочь?

1 ответ

Вы делаете это правильно и $ConfigFile передается как array, Так что ваша проблема не в передаче параметров в scriptblock, Скорее о том, как вы можете извлечь несколько ZIP-файлов, используя 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
Другие вопросы по тегам