Запуск сценария в командной строке с помощью pwsh.exe делает именно то, что мне нужно... задание запускается, и Wait-Job вызывает сценарий для приостановки выполнения до тех пор, пока задание не будет выполнено, прежде чем оно продолжится.
Когда я выполняю этот же файл ps1 с помощью метода System.Management.Automation.Powershell.Invoke, задание Start-Thread команда, похоже, не увольняется. Сценарий просто продолжается, и это приводит к тому, что остальная часть моего сценария больше ничего не делает, поскольку он зависит от задания, которое я собираюсь запустить.
Поскольку я знаю, что запускаю команду powershell с помощью pwsh в командной строке работает, я знаю, что моя логика PowerShell верна.
Я также тестировал размещение Start-Sleep в своем коде и выполнение его через .Invoke, и сценарий учитывал паузу перед возвратом вернемся к моей логике .net. Я также попробовал Start-ThreadJob и Start-Job, но ни один из них не работает должным образом. И я не буду проводить никаких исследований.
Я исключаю свой .net-клиент, чтобы скрипт мог выполняться так, как задумано. Это должно позволить сценарию PowerShell приостанавливать выполнение, пока задание запущено и помечено как «Завершено». Я могу получить ожидаемое поведение, если запущу pswh как процесс в dotnet и передам аргументы таким образом, но я чувствую, что это должно работать и через API.
Следующий код является примером что, похоже, не работает:
Код: Выделить всё
$codeBlock = [scriptblock]::Create("kubectl wait --timeout=-1s --for=condition=Failed job/$batchStatus -n $namespace")
$stj = Start-ThreadJob -Name "$batchStatus-failed" -ScriptBlock $codeBlock
"WaitFailed job state after apply: $($stj.Name)"
wait-Job -Id $stj | Out-Null
Логика PowerShell находится в файле с именем Execute.ps1
это моя логика C# для выполнения Execute.ps1
Код: Выделить всё
System.Management.Automation.PowerShell ps = System.Management.Automation.PowerShell.Create();
ps.AddScript(File.ReadAllText(@"C:\powershell\execute.ps1"));
var t = ps.Invoke();
Подробнее здесь: https://stackoverflow.com/questions/787 ... gement-aut
Мобильная версия