Nie jestem pewien, czy należy to nazwać potrzebą wielowątkowości, zadania opartego na zadaniu, czy asynchronicznej, ale zasadniczo mam funkcję skryptu Powershell, która ma kilka parametrów i trzeba wywoływać go kilka razy z różnymi parametrami i uruchamiać równolegle.Sposób wykonywania funkcji Powershell kilka razy równolegle
Obecnie mogę wywołać funkcję tak:
Execute "param1" "param2" "param3" "param4"
Jak mogę nazwać to wiele razy, nie czekając na wezwanie do wykonania każdego powrót do rozmówcy?
Obecnie używam v2.0 ale mogę aktualizować w razie potrzeby
EDIT: oto co mam do tej pory, co nie działa:
$cmd = {
param($vmxFilePath,$machineName,$username,$password,$scriptTpath,$scriptFile,$uacDismissScript,$snapshotName)
Execute $vmxFilePath $machineName $username $password $scriptTpath $scriptFile $uacDismissScript $snapshotName
}
Start-Job -ScriptBlock $cmd -ArgumentList $vmxFilePath, $machineName, $username $password, $scriptTpath, $scriptFile, $uacDismissScript, $snapshotName
pojawia się błąd:
cannot convert 'system.object[]' to the type 'system.management.automation.scriptblock' required by parameter 'initializationscript'. specified method is not supported
EDIT2: Zmodyfikowałem skrypt, ale nadal dostaję powyższy błąd. Oto mój mod:
$cmd = {
param($vmxFilePath,$machineName,$username,$password,$scriptTpath,$scriptFile,$uacDismissScript,$snapshotName)
Execute $vmxFilePath $machineName $username $password $scriptTpath $scriptFile $uacDismissScript $snapshotName
}
Start-Job -ScriptBlock $cmd -ArgumentList $vmxFilePath, $machineName, $username $password, $scriptTpath, $scriptFile, $uacDismissScript, $snapshotName
ciągle mam twardy czas mapowanie swoje rozwiązanie, aby mój własny skrypt do pracy. Zacznę od prostoty i po prostu staram się uruchomić Start-Job, aby uruchomić mój blok skryptów z argumentami wymaganymi przez moją niestandardową funkcję Execute. Może możesz rozwinąć? Czy $ foo jest parametrem oprócz parametrów określonych przez parametr ($ a, $ b)? – JohnZaj
Widzę teraz, dzięki. Nadal dostaję błąd. Jeśli nie masz pewności, co to może być, po prostu utworzę osobny wpis/pytanie. – JohnZaj
Do celów testowych zamień wywołanie funkcji 'Execute()' na kod, który po prostu odtwarza parametry. Czy to działa? Jeśli tak, problem leży w funkcji, którą chcesz wywołać. –