У меня есть сценарий, которому требуется ряд параметров:
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 -CTOfin_earn_n_deduct_actg -CCOL f_edeh_doc_id
все работает отлично.Однако мне нужно запустить несколько (десятки) экземпляров сценария параллельно, и я написал сценарий-обертку, который вызывает тот, который выполняет реальную работу, как задание: я готовлю массив с аргументами (включая ключевые слова, такие как «-CFG»).") anhd передает его в start-job:
# 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
ВНИМИСРО
-CMSDB
IMIS_UNOV
-CFROM
заработать_n_deduct_ref * 1023_с__ц1025 * -FULL
, но вывод из вызываемых сценариев говорит, что единственный полученный параметр - это файл конфигурации - все остальные имеют значения по умолчанию.
PS C:\ ps> receive-job 1391
17.12.2010 10:54:14 Начало загрузки таблицы none;source db none;
17.12.2010 10:54:14 Целевая таблица отсутствует;целевая база данных - нет;
17.12.2010 10:54:14 Файл конфигурации: \ ps \ bcpCopyCfg.ps1.
17.12.2010 10:54:14 Целевой сервер (MS SQL) - secap900-new
17.12.2010 10:54:14 Необходимо указать исходную базу данных.Выход ...
Подскажите, пожалуйста, что я делаю не так?