【发布时间】:2017-02-24 08:24:57
【问题描述】:
我有一个 PowerShell 脚本,它调用 API 并根据 POST 请求是否通过返回 0 或 99。我的 PowerShell 代码:
try
{
Invoke-RestMethod -uri $url -Method Post -Body $body -ContentType 'application/json' -ErrorAction Stop
return 0
}
catch
{
return 99
}
这就是我从 Python 脚本调用脚本的方式:
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 脚本时,我可以看到它在 POST 请求失败时返回 99。所以问题似乎不在于 PowerShell 文件。
在调试 Python 文件时,这是我在控制台上看到的:(注意 Python 代码中打印语句的顺序)
^^^^^^^
99
****************
0
我不明白的一件事是,“99”在输出中做了什么?我什至没有打印“^^^^^”和“*****”之间的结果。那么如果PowerShell脚本返回99,为什么在“*****”之后变成0呢?
【问题讨论】:
标签: python powershell popen