3

Azure Automation を使用して PowerShell スクリプトを開発すると、非常に遅くなる可能性があります。これは、スクリプトをローカルでテスト実行できる PowerShell ISE アドインを使用することで役立ちます。

ただし、必然的に、ローカルで実行している場合と Azure Automation で実行している場合では、いくつかの点が異なります。たとえば、ファイルパス。

スクリプトが現在実行されている環境を検出する正しい方法は何ですか?

現時点では、ローカルにのみ保持し、アップロードしない変数アセットを定義しています。次に、次のようなことができます。

# 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 で実行するときのマシン名とユーザー名はどちらも「クライアント」ですが、これはより堅牢な方法と思われますか?

4

3 に答える 3

5

既に発見したように、これにはユーザー名/コンピューター名を使用できます。または、Runbook ジョブ ID の存在を確認できます。

if($PSPrivateMetadata.JobId) {
   # in Azure Automation
}
else {
   # not in Azure Automation
}
于 2016-05-15T20:09:22.340 に答える
1

$psISE「正しい方法」があるかどうかはわかりませんが、 Powershell ISE でスクリプトを実行しているかどうかを確認したい場合は、変数が存在するかどうかを確認できます。

#same as if($psISE -ne $null) {...  
if($psISE) {
    #In PowerShell ISE
} else {
    #PowerShell console or Azure Automation
}
于 2016-05-14T19:40:22.387 に答える