予有需要大量的參數的腳本:Powershell的:將參數傳遞給作業
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")
從命令提示時調用例如
的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
不幸的是,被調用的腳本不接收參數:主叫打印陣列,它看起來罰款:
參數數組:
- CFG
\ ps \ bcpCopyCfgOAH.ps1
-CSYBDB
vnimisro
-CMSDB
IMIS_UNOV
-CFROM
earn_n_deduct_ref
-CTO
fin_earn_n_deduct_ref
- 全
但從稱爲腳本輸出表示,收到的唯一參數是配置文件 - 其餘的都是默認值。
PS C:\ PS>接受在職1391
12/17/2010 10時54分14秒開始表沒有任何的上傳;源數據庫無;
12/17/2010 10:54:14目標表是無;目標數據庫是無;
12/17/2010 10:54:14配置文件是\ ps \ bcpCopyCfg.ps1。
12/17/2010 10:54:14目標服務器(MS SQL)是secap900-new
12/17/2010 10:54:14必須指定源數據庫。退出...
你能指點我做錯了什麼嗎?
謝謝你的建議。 – Lubo 2010-12-17 21:22:37
感謝您的建議。現在這些工作被釋放,似乎掛着什麼都不做。繼續掛起,即使我在啓動後立即在腳本中放置一個退出並打印參數。順便說一句,這種啓動任務的方式任務mngr仍然顯示15個PowerShell處理 - 正是#我開始 – Lubo 2010-12-17 21:27:09
,也是手動停止作業後,接收作業不會返回任何東西 – Lubo 2010-12-17 21:31:53