2016-06-09 84 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 
相關問題