У меня есть сценарий powershell, который вызывает API и возвращает 0 или 99 на основе запроса POST. Мой код PowerShell:Команда Python popen wait не работает как ожидалось
try
{
Invoke-RestMethod -uri $url -Method Post -Body $body -ContentType 'application/json' -ErrorAction Stop
return 0
}
catch
{
return 99
}
Это, как я звоню скрипт из моего питона сценария:
req = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'-ExecutionPolicy',
'Unrestricted',
'./call.ps1',
param1, param2], cwd=os.getcwd())
print("^^^^^^^")
result = req.wait() #something is going wrong here
print("****************")
print(result)
if result == 0:
# do something
else:
# do something else
Теперь это, где его будет не так ... даже если запрос POST несоответствует В переменной «result» все еще есть «0», а не «99». Когда я отдельно запускаю сценарий powershell, я вижу, что его возвращение 99, когда запрос POST терпит неудачу. Поэтому проблема заключается не в файле powershell.
отладки файл питона, это то, что я вижу на консоли: (обратите внимание на порядок операторов печати в коде Python)
^^^^^^^
99
****************
0
Одна вещь, которую я не понимаю .. что " 99 "делать на выходе? Я даже не печатаю результат между «^^^^^» и «*****». Поэтому, если сценарий powershell возвращает 99, почему он меняется на 0 после «*****».
Я действительно потерялся здесь. Пожалуйста помоги.
Большое спасибо за подробное объяснение, Ансгар. Теперь мои файлы полностью работают, как ожидалось. Я, честно говоря, не смог бы это выяснить сам. Большое вам спасибо еще раз :) – 90abyss