如何获取Azure Automation中运行的PowerShell Runbook名称?
在Azure Automation Runbook中获取当前Runbook名称的方法
在Azure Automation的PowerShell Runbook环境里,$MyInvocation.BoundParameters['Name']无法获取Runbook名称,因为该参数不会被自动化环境自动传入。以下是两种可靠的获取方式:
方法1:读取环境变量(推荐)
Azure Automation会自动将当前Runbook的名称注入到环境变量中,直接读取$env:AUTOMATION_RUNBOOK_NAME即可获取:
$runbookName = $env:AUTOMATION_RUNBOOK_NAME
这个变量无需额外配置,在所有PowerShell Runbook(包括图形化Runbook的脚本模块)中都能直接使用,是最简单高效的方式。
方法2:通过Az模块查询作业信息(适合复杂场景)
如果需要获取更多Runbook关联信息(比如作业状态、创建时间),可以借助Az模块查询当前作业对应的Runbook名称。首先确保自动化账户已安装Az.Automation模块,且Runbook拥有足够权限(如使用托管身份),示例代码如下:
# 获取当前作业ID $jobId = $env:AUTOMATION_JOB_ID # 导入模块(若未自动加载) Import-Module Az.Automation # 查询作业详情并提取Runbook名称 $jobDetails = Get-AzAutomationJob -ResourceGroupName "你的资源组名称" -AutomationAccountName "你的自动化账户名称" -Id $jobId $runbookName = $jobDetails.RunbookName
集成Discord通知示例
将获取到的Runbook名称融入通知逻辑,示例代码如下:
$runbookName = $env:AUTOMATION_RUNBOOK_NAME $discordWebhookUrl = "你的Discord Webhook地址" $notificationContent = @{ content = "Runbook **$runbookName** 执行完成,状态:成功" } | ConvertTo-Json Invoke-RestMethod -Uri $discordWebhookUrl -Method Post -Body $notificationContent -ContentType "application/json"
内容的提问来源于stack exchange,提问作者bullmaca
相关产品推荐
相关产品推荐

