传递多个参数在启动作业命令脚本块
问题描述:
我想多参数传递给我的脚本块:传递多个参数在启动作业命令脚本块
$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
但它的失败。有人能帮我吗?
答
你做得对,$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
你这样做的权利。你会得到什么错误? –
你的脚本没有'Start-Job'工作吗?我真的怀疑'$ shell.NameSpace'接受数组作为参数。 – PetSerAl
如果我将$ ConfigFile作为单个路径而不是数组传递,它将起作用。但是,当我通过一个数组,它失败了.. – Sathish