У меня есть следующий PowerShell 5 программы:PowerShell не начнет работу
$job = Start-Job -ScriptBlock {timeout.exe 10 /NOBREAK}
Wait-Job $job
Когда я бегу, он заканчивается немедленно следующий вывод:
Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- ------- 1 Job1 BackgroundJob Completed True localhost timeout.exe 10 /NOBREAK
и timeout.exe
не появляется в Диспетчер задач.
Почему это не подождать 10 секунд до прекращения? Когда я вызываю timeout.exe 10 /NOBREAK
вне задания, он ждет 10 секунд, как и вызывает Start-Sleep 10
в задании.
Я не ищу другой способ решить ту же проблему (спать), но специально для ответа на вопрос почему эта программа ведет себя так, как она делает.
'Invoke-Command -scriptblock {timeout.exe 10/NOBREAK}' – 4c74356b41
Я имею в виду, 'Start-Job - ScriptBlock {Invoke-Command -ScriptBlock {timeout.exe 10/NOBREAK}} ' – 4c74356b41
вы можете использовать Invoke-Command как задание, чтобы оно выполнялось как фоновое задание, и вы также можете получить его с помощью _Receive-Job_ следующим образом: 'Invoke-Command -ScriptBlock {timeout.exe 10/NOBREAK} -AsJob' –