Я столкнулся с той же проблемой и нашел решение, я также обнаружил, что многие люди предложили стандартное решение, которое обычно работает в большинстве случаев, но они не убедились, что оно работает для этого сценария, и выясняется, чтоэто крайний случай.
Я думаю, что проблема имеет какое-то отношение к az cli, основанному на python.
Win10CommandPrompt:\> where az
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin\az.cmd
Если вы посмотрите в этот файл, то увидите что-то вроде этого и обнаружите, что Azure CLI - это просто python:
python.exe -IBm azure.cli
Так что делатьВы хотите сделать, попробуйте это (это работает для меня):
import subprocess
out = subprocess.run(['python', '-IBm', 'azure.cli', '-h'], stdout=subprocess.PIPE).stdout.decode('utf-8')
print(out)
#this is equivalent to "az -h'
Приведенный выше синтаксис не будет работать, если каждый аргумент не является списком строк, разделенных запятыми, я нашел синтаксис Iкак много после прочтения, как сделать несколько аргументов с помощью python popen:
import subprocess
azcmd = "az ad sp create-for-rbac --name " + SPName + " --scopes /subscriptions/" + subscriptionid
out = subprocess.run(azcmd, shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
print(out)