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

时间:2016-05-14 09:18:18

标签: 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
}

但这看起来相当笨重且容易出错。我正在寻找一种更强大,更可靠的方法。

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

2 个答案:

答案 0 :(得分:2)

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

if($PSPrivateMetadata.JobId) {
   # in Azure Automation
}
else {
   # not in Azure Automation
}

答案 1 :(得分:1)

不确定是否有正确的方式",但如果您想检查是否在Powershell ISE中运行脚本,则可以检查$psISE - 变量是否存在

#same as if($psISE -ne $null) {...  
if($psISE) {
    #In PowerShell ISE
} else {
    #PowerShell console or Azure Automation
}