Передача нескольких аргументов в блок скриптов в команде 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