Как запустить Python Script с удаленной машины через Powershell в асинхронном режиме? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть функция powershell, которая работает только синхронно.Я хотел бы обновить эту функцию, чтобы я мог запускать несколько вызовов скрипта Python параллельно.Кто-нибудь знает, как асинхронно вызывать скрипт Python с использованием powershell, имея в виду, что каждый скрипт Python по сути является циклом while, который не заканчивается до тех пор, пока не пройдет 24 часа.Функция powershell принимает на удаленной машине виртуальную среду python, путь к скрипту python и аргументы.

Вот что было сделано до сих пор:

function Run-Remote($computerName, $pname, $scriptPath, $pargs)
{
    $cred = Get-QRemote-Credential
    Invoke-Command -ComputerName $computerName -Credential $cred -ScriptBlock {powershell -c "$Using:pname '$Using:scriptPath' $Using:pargs"} -ConfigurationName QRemoteConfiguration
}

1 Ответ

0 голосов
/ 21 ноября 2018

Действительно простое исправление, просто добавьте «-AsJob» в команду invoke.Это заставит PowerShell ускорить новый процесс для каждой отправляемой вами команды.Затем используйте «Get-Job | Wait-Job» в конце скрипта, чтобы дождаться завершения всех процессов.И «Get-Job | Receive-Job», чтобы получить любые данные обратно.

Я рекомендую прочитать о заданиях powershell, которые полезны, но не интуитивно понятны.

function Run-Remote($computerName, $pname, $scriptPath, $pargs)
{
    $cred = Get-QRemote-Credential
    Invoke-Command -AsJob -ComputerName $computerName -Credential $cred -ScriptBlock {powershell -c "$Using:pname '$Using:scriptPath' $Using:pargs"} -ConfigurationName QRemoteConfiguration
}

Get-Job | Wait-Job
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...