Mam skrypt, który wymaga wielu parametrów:PowerShell: przekazywanie parametrów do pracy
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")
gdy wywoływana z poziomu wiersza poleceń, np
PowerShell. \ BcpCopy.ps1 -CFROM earn_n_deduct_actg -CTO fin_earn_n_deduct_actg -CCOL f_edeh_doc_id
wszystko działa poprawnie. Muszę jednak uruchomić równolegle kilka (kilkadziesiąt) wystąpień skryptu i napisałem skrypt otoki, który wywołuje wykonującego rzeczywistą pracę jako zadanie: Przygotowuję tablicę z argumentami (włączając słowa kluczowe takie jak " -cfg ") anhd przekazać go do uruchomienia zadania:
# 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
Niestety, nazywany skrypt nie odbiera argumenty: dzwoniący drukuje tablicę i wygląda dobrze: tablicę
Argument:
- CFG
\ ps \ bcpCopyCfgOAH.ps1
-CSYBDB
vnimisro
-CMSDB
IMIS_UNOV
-CFROM
earn_n_deduct_ref
-CTO
fin_earn_n_deduct_ref
-full
ale wyjście z zwane skrypty mówi, że jedynym parametrem jest otrzymana plik konfiguracyjny - cała reszta ma domyślne wartości.
PS C: \ ps> otrzymywać-job 1391
12/17/2010 10:54:14 Uruchamianie przesyłanie tabeli równych; źródło db brak;
17.12.2010 10:54:14 Tabela docelowa to żadna; docelowy db to brak;
12/17/2010 10:54:14 Plik konfiguracyjny to \ ps \ bcpCopyCfg.ps1.
17.12.2010 10:54:14 Docelowy serwer (MS SQL) to secap900-nowy
12/17/2010 10:54:14 Należy podać źródłową bazę danych. Wychodząc z ...
Czy możesz wskazać mi, co robię źle?
Dziękuję za radę. – Lubo
Dzięki za poradę. Teraz prace są zwolnione i wydają się wieszać, nie robiąc nic. Kontynuuj, aby zawiesić nawet umieścić wyjście w skrypcie zaraz po uruchomieniu i wypisuje argumenty. Przy okazji tego sposobu uruchamiania zadań, zadanie mngr nadal pokazuje 15 przetworzonych powłok - dokładnie # Zacząłem – Lubo
, a także po ręcznym zatrzymaniu zadań, odbiór-praca nie zwraca niczego – Lubo