2016-06-09 4 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

$ConfigFilearray으로 전달됩니다. 따라서 문제는 이 아니며scriptblock에 전달하는 것과 관련이 없습니다. 그 대신에 당신은 Shell.application을 사용하여 여러 zip 파일을 어떻게 추출 할 수 있습니까?

당신은 아마 Foreach-Object cmdlet를 사용하여 각 우편을 반복하고 추출해야 : 당신이 바로 그 일을하는

$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 
관련 문제