gpt4 book ai didi

azure - 检查 Azure 自动化 Runbook (PowerShell) 运行位置的方法是什么?

转载 作者:行者123 更新时间:2023-12-02 04:27:53 25 4
gpt4 key购买 nike

我正在 Azure 自动化中编写一组 PowerShell Runbook。其中一些在本地运行(例如 Hybrid Runbook Worker),另一些则直接在 Azure 中运行。

如果任何混合脚本在 Azure 中意外启动,我希望立即出错并退出(因为它是使用门户时的默认选择)。

我以为我可以通过获取 Get-AutomationConnection -Name AzureRunAsConnection 的结果进行检查,但它需要大约 4 秒的时间来响应,但它在通过混合工作线程运行时也会返回值。有人知道更好/更快的方法吗?

谢谢!

更新:一句粗俗但似乎有效的一行是:

Try {$AmIInAzure = Get-AzureRmEnvironment AzureCloud -ErrorAction Stop;Throw "This runbook must be run on-premises via Hybrid Runbook Worker.  Exiting."} Catch {}

变量 $AmIInAzure 仅用于隐藏 Get-AzureRMEnvironment 的输出,而 Try..Catch 用于隐藏任何错误。如果此代码在 Azure 中运行,它将抛出指定的文本,并且 Runbook 将出错(根据需要)。如果它在混合工作线程上运行,则不会执行任何操作(允许 Runbook 的其余部分运行)。

我很好奇是否有人有更好的方法。

更新 2: 该 oneliner 似乎不起作用,因为 throw、exit 或 break 都不会导致 Runbook 退出。仍在寻找工作方法...

最佳答案

您可以使用 $PSPrivateMetadata 进行测试

  begin {
if ($null -eq $PSPrivateMetadata) {
throw "This command can only be run within the context of an Azure Automation Runbook Worker"
}
}

关于azure - 检查 Azure 自动化 Runbook (PowerShell) 运行位置的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52062093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com