gpt4 book ai didi

powershell - 检测脚本是否在 Azure 自动化中运行的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 09:59:46 26 4
gpt4 key购买 nike

使用 Azure 自动化开发 PowerShell 脚本可能非常缓慢。这可以通过使用 PowerShell ISE 插件来帮助您在本地测试运行脚本。

但是,不可避免地,在本地运行与在 Azure 自动化中运行时,有些事情会有所不同。例如文件路径。

检测脚本当前运行环境的正确方法是什么?

目前我定义了一个变量 Assets ,我只保留本地而不上传。然后我可以做类似的事情:

# Check if we are running locally - NOTE: Do not upload the runningLocally variable! Keep it local only
if (Get-AutomationVariable -Name 'runningLocally') {
# We are running locally
} else {
# We are running in Azure Automation
}

但这似乎相当笨重且容易出错。我正在寻找一种更稳健可靠的方法。

我发现了一些其他方法。 AA中运行时的机器名和用户名都是“Client”,这似乎是一种更健壮的方法?

最佳答案

适用于 PowerShell 5.1 和 7.1 的有效解决方案

$PSPrivateMetadata.JobId 来自 this answer不适用于带有 PowerShell 7.1 的 Azure 自动化 Runbook,因此我搜索了另一个解决方案,最终找到了合适的环境变量 ($env:AZUREPS_HOST_ENVIRONMENT)。

它在带有 PowerShell 5.1 和 PowerShell 7.1 的 Azure 自动化 Runbook 中返回“AzureAutomation/”,并且在本地环境中不存在。

if ("AzureAutomation/" -eq $env:AZUREPS_HOST_ENVIRONMENT) {
# Azure Automation
}
else {
# Local
}

如果您只想区分“本地”和“任何其他环境”,您可以使用这个较短的版本:

if (!$env:AZUREPS_HOST_ENVIRONMENT) {
# Local
}
else {
# Not local
}

关于powershell - 检测脚本是否在 Azure 自动化中运行的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37224874/

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