Azure中Collection B执行脚本触发Collection A脚本的机制咨询
解决方案:Azure跨Collection自动化脚本触发与工件传递
1. 为Collection A的Script 1配置Webhook
- 进入Azure自动化账户,找到Collection A中的Script 1(Runbook),打开其配置页
- 新建Webhook,设置有效期、启用状态,生成并保存Webhook URL(后续不可再次查看,务必妥善留存)
- 配置Webhook的输入参数,对应Script 1需要接收的工件字段
2. 在Collection B的Script 2中添加触发逻辑
根据Script 2的语言类型,添加调用Webhook的代码:
PowerShell示例
# 构造要传递的工件数据(按需调整字段) $artifactData = @{ TaskID = "B-20240520-001" ArtifactPath = "/automation/artifacts/report.zip" Metadata = @{ Creator = "Script2" Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" } } | ConvertTo-Json # 调用Collection A中Script 1的Webhook Invoke-RestMethod -Uri "<你的Webhook URL>" -Method Post -Body $artifactData -ContentType "application/json"
Python示例
import requests import json from datetime import datetime # 构造工件数据 artifact_data = { "TaskID": "B-20240520-001", "ArtifactPath": "/automation/artifacts/report.zip", "Metadata": { "Creator": "Script2", "Timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S") } } # 发送触发请求 response = requests.post("<你的Webhook URL>", json=artifact_data) response.raise_for_status()
3. 在Script 1中接收并处理工件
PowerShell接收参数示例
param( [Parameter(Mandatory=$false)] [string]$TaskID, [Parameter(Mandatory=$false)] [string]$ArtifactPath, [Parameter(Mandatory=$false)] [hashtable]$Metadata ) # 对接收到的工件数据进行业务处理 Write-Output "触发来源任务ID: $TaskID" Write-Output "工件路径: $ArtifactPath" Write-Output "元数据: $($Metadata | Out-String)"
PowerShell直接读取请求体示例(适用于复杂JSON结构)
$webhookRequestBody = $WebhookData.RequestBody | ConvertFrom-Json Write-Output "完整工件数据: $($webhookRequestBody | Out-String)"
4. 权限与安全注意事项
- 确保Collection B所在的自动化账户出站流量允许访问Webhook地址(若配置了网络规则)
- 可在Webhook中添加自定义验证密钥:Script 2调用时在请求头携带密钥,Script 1中校验密钥合法性,提升安全性
内容的提问来源于stack exchange,提问作者Raghav Garg
相关产品推荐
相关产品推荐

