2016-05-14 11 views
2

Die Entwicklung von PowerShell-Skripts mit Azure Automation kann sehr langsam sein. Dies wird durch die Verwendung des PowerShell ISE-Add-Ins unterstützt, mit dem Sie die Skripts lokal testen können.Was ist der richtige Weg zu erkennen, ob ein Skript in Azure Automation ausgeführt wird?

Allerdings werden einige Dinge bei der lokalen Ausführung anders sein, wenn die Dinge in Azure Automation ausgeführt werden. Dateipfade zum Beispiel.

Wie kann die Umgebung, in der das Skript gerade ausgeführt wird, korrekt erkannt werden?

Im Moment definiere ich eine Variable Asset, die ich nur lokal halten und nicht hochladen. Dann kann ich etwas tun wie:

# 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 
} 

Aber das scheint eher klobig und fehleranfällig. Ich suche eine robustere und zuverlässigere Methode.

Ich habe einige zusätzliche Methoden entdeckt. Die Maschinen- und Benutzernamen, wenn sie in AA ausgeführt werden, sind beide "Client", dies scheint eine robustere Methode zu sein.

+0

Nur eines anderen Verfahrens gedacht. Wenn in AA ausgeführt wird, ist der temporäre Ordner 'c: \ temp' –

Antwort

2

können Sie den Namen Benutzername/Computer für diese verwenden, wie Sie bereits entdeckt haben, oder Sie können auf das Vorhandensein eines Runbook Job-ID überprüfen:

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

Nicht sicher, ob es einen "richtigen Weg" gibt, aber wenn Sie überprüfen möchten, ob Sie ein Skript in Powershell ISE ausführen, können Sie überprüfen, ob die $psISE -Variable existiert.

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

Ah, OK, mach es anders herum - ich verstehe. –

Verwandte Themen