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

Jul*_*ght 3 powershell azure-automation

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

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

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

目前我定义了一个变量资产,我只保留本地而不上传。然后我可以执行以下操作:

# 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
}
Run Code Online (Sandbox Code Playgroud)

但这似乎相当笨拙且容易出错。我正在寻找一种更强大和可靠的方法。

我发现了一些额外的方法。AA运行时的机器名和用户名都是“客户端”,这似乎是一个更健壮的方法?

Joe*_*Joe 5

您可以使用您已经发现的用户名/计算机名称,或者您可以检查 Runbook 作业 ID 是否存在:

if($PSPrivateMetadata.JobId) {
   # in Azure Automation
}
else {
   # not in Azure Automation
}
Run Code Online (Sandbox Code Playgroud)