我有一个需要许多参数的脚本:
param ([string]$FOO="foo",[string]$CFG='\ps\bcpCopyCfg.ps1', [string]$CFROM="none", `
[string]$CTO="none", [switch]$HELP=$FALSE, [switch]$FULL=$FALSE, [string]$CCOL="none" `
,[string]$CDSQUERY="none", [string]$CMSSRV="none" `
,[string]$CSYBDB="none", [string]$CMSDB="none")
Run Code Online (Sandbox Code Playgroud)
从命令提示符调用时,例如
powershell.\ bcpCopy.ps1 -CFROM earn_n_deduct_actg -CTO fin_earn_n_deduct_actg -CCOL f_edeh_doc_id
一切正常.然而,我需要并行启动脚本的几个(几十个)实例,并且我编写了一个包装脚本,它将实际工作作为一个工作调用:我准备一个带有参数的数组(包括像"-CFG"这样的关键字) ")anhd将它传递给初学者:
# Prepare script block to be released
$ARGS=("-CFG ", $CFG, "-CSYBDB ", $SYBDB, "-CMSDB ",$MSDB, "-CFROM ", $SYBTBL, "-CTO ",$MSTBL)
if ($FULL) {
$ARGS = $ARGS + " -FULL"
} else {
$ARGS = $ARGS + " -CCOL $($args[5]) "
}
"Argument array:"
$ARGS
start-job -scriptblock {powershell.exe -file '\ps\bcpCopy.ps1'} -ArgumentList $ARGS
Run Code Online (Sandbox Code Playgroud)
不幸的是,被调用的脚本没有收到参数:调用者打印数组,看起来很好:
参数数组:
-CFG …