use*_*037 5 azure azure-cli azure-devops azure-pipelines-release-pipeline azure-cli2
我为实现这一非常简单的任务而疯狂。我需要在Visual Studio Team Services上的Azure CLI任务中设置一个Output Variable,因为Release定义中的下一个任务将根据该变量的值执行。
我写了这个简单的代码
call az extension add --name azure-cli-iot-ext
call echo ##vso[task.setvariable variable=iotEdgeExists;]$(az iot hub query -n $(iotHub) -q "select * from devices.modules where devices.deviceId ='$(iotEdge)'")
Run Code Online (Sandbox Code Playgroud)
确实有效,但不是预期的,实际上,当我在下一个Azure CLI任务中读取Ouput变量并尝试在屏幕上打印时,我得到了命令字符串而不是输出...
call echo"$(az iot hub query -n <IOT_HUB> -q "select * from devices.modules where devices.deviceId ='<IOT_EDGE>'")"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
goo*_*all 12
如果使用Azure CLI 版本 2. * ,则可以使用 powershell 命令而不是批处理脚本向导。微软的文档在这里找到
例如,如果您需要访问令牌来更新 azure 数据库,它将如下所示:
$token= & az account get-access-token --resource=https://database.windows.net --query accessToken
Write-Output("##vso[task.setvariable variable=sqlToken;]$token")
Run Code Online (Sandbox Code Playgroud)
如果在本地测试,请不要忘记先登录:
az login
Run Code Online (Sandbox Code Playgroud)
请参考下面的代码:
call {your command}>tmpFile1
set /p myvar= < tmpFile1
echo "##vso[task.setvariable variable=testvar;]%myvar%"
Run Code Online (Sandbox Code Playgroud)
要么
FOR /F "tokens=* USEBACKQ" %%F IN (`{your command}`) DO (
SET var=%%F
)
echo "##vso[task.setvariable variable=testvar;]%var%"
Run Code Online (Sandbox Code Playgroud)
Mechaflash在如何将命令输出设置为批处理文件中的变量中的答案
| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |