Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的Azure CLI_Python_Azure_Command Line Interface - Fatal编程技术网

python中的Azure CLI

python中的Azure CLI,python,azure,command-line-interface,Python,Azure,Command Line Interface,我正在从python程序运行一些Azure CLI命令 process = subprocess.Popen('powershell.exe', stdin=subprocess.PIPE, stdout=subprocess.PIPE) command_list = "Connect-AzAccount \n" + "az keyvault secret show --vault-name " + vault_name + " --name " + secret_name out, err

我正在从python程序运行一些Azure CLI命令

process = subprocess.Popen('powershell.exe', stdin=subprocess.PIPE, stdout=subprocess.PIPE)

command_list = "Connect-AzAccount \n" + "az keyvault secret show --vault-name " + vault_name + " --name " + secret_name
out, err = process.communicate(command_list.encode('utf-8'))

从这件事上看是否出了问题?比如用户没有登录或者保险库不存在?它似乎正在将这些错误打印到终端,但我希望在我的程序中捕获它们。

您实际上使用的是CLI和Azure PowerShell模块的混合

我在我的机器上进行了测试,认为这不重要,但事实上确实如此。如果您使用PowerShell登录,但使用az.exe执行命令,则会得到:

Please run 'az login' to setup account.

…这正是使用Az所需要做的。所以你有一个选择。您可以仅使用PowerShell(Az模块)并将
Az keyvault secret show--vault name xxxx
替换为
Get-AZKeyVault secret-vault name xxxx
,Az.exe,只需将
Connect AzAccount
替换为
Az login
,或者您可以同时使用这两个选项,但需要同时登录。我的建议是,因为您使用管道进行进程间通信,所以只使用az.exe。但这实际上取决于您希望实现的目标。

有什么原因不能将Azure SDK用于Python吗?我想让您在“az登录”时得到提示,但我在SDK中找不到如何做到这一点。或者让用户使用用户凭据登录,就像您将promptI更改为使用az.exe一样。但是,该错误在out或err中不存在。它似乎只是以“请运行'az login'以设置帐户”的形式打印到终端上。错误流为空且输出流仅包含命令,请首先尝试将powershell.exe更改为cmd.exe。其次,尝试先将
az login
发送到process.communicate(),然后再发送process.wait()。希望这会为您弹出登录提示。如果失败,请尝试使用带有az登录名的服务主体。