2017-10-30 1 views
0

Ich habe sehr wenig Erfahrung mit Powershell, also könnte dies eine offensichtliche Frage sein.Ausführen eines Powershell-Skripts mit AzureRM als Azure-Web-Job

Ich versuche, ein Powershell-Skript als Webjob auszuführen. Der einzige Zweck des Skripts besteht darin, einen Endpunkt über die AzureRM-Bibliothek zu aktualisieren.

Ich habe es geschafft, dies vor Ort zu tun und es sieht ungefähr so ​​aus:

Install-Module AzureRM -AllowClobber Import-Module AzureRM 

Login-AzureRmAccount -ServicePrincipal -ApplicationId "http://my-app" 
-Credential $pscredential -TenantId $tenantid 

$wsd = Get-AzureRmMlWebService -Name 'serviceName' -ResourceGroupName 'resourceGroupName' 
Update-AzureRmMlWebService -Name 'serviceName' -ResourceGroupName 'resourceGroupName' -ServiceUpdates $wsd 

Ich brauche dieses Skript auf Befehl der Lage sein, von meiner Website zu laufen, so dachte ich, eine webjob Schaffung denn es ist die war Weg zu gehen. Allerdings scheint die Powershell, die mein Skript auf der Webjob-Seite ausführt, weder "install-module" noch AzureRM zu haben, und so fühle ich mich ein wenig festgefahren. Ich habe versucht, AzureRM daran anzubringen, aber es gibt ein 50-MB-Limit und AzureRM ist 500+ (100+ gezippt).

[10/30/2017 19:37:46 > 44bf8a: ERR ] Install-Module : The term 'Install-Module' is not recognized as the name of a 
[10/30/2017 19:37:46 > 44bf8a: ERR ] cmdlet, function, script file, or operable program. Check the spelling of the 
[10/30/2017 19:37:46 > 44bf8a: ERR ] name, or if a path was included, verify that the path is correct and try again. 

Wie soll ich darüber gehen?

Auch Bonusfrage: Wie behandle ich den Login im Webjob? Muss ich meine Live-ID-Anmeldedaten weitergeben?

+0

können Sie azure-Funktion dafür verwenden, aber wahrscheinlich einfacher, nur eine API direkt aufzurufen, wenn ihr 1 Befehl – 4c74356b41

+0

Sorry, was meinst du mit dem Aufruf einer API? Gibt es eine zugrunde liegende API, die ich direkt verwenden kann? Ich habe die assoziierte DLL im Verzeichnis AzureRM.MachineLearning gefunden, konnte sie jedoch nicht aufrufen, da sie auf einigen Abstraktionen von IAzureContext basiert (Authentifikations-bezogen, vermute ich), um – WPFUser

+0

auszuführen. Sehr interessant. OK, also scheint die API die offensichtliche Lösung dafür zu sein. Vielen Dank! (gefunden unter https://docs.microsoft.com/en-us/rest/api/machinelearning/webservices/createorupdate) – WPFUser

Antwort

1

Nur um einen Kommentar in Antwort zu konvertieren + geben Sie eine bessere Idee, wie Azure funktioniert.

Alles ist ein REST API-Aufruf in Azure. Wenn Sie in Azure etwas tun können (oder das Portal kann es, oder Sie haben es in einer Demo gesehen), gibt es dafür einen REST-Aufruf. Es ist möglicherweise dokumentiert oder nicht, das ist eine andere Sache (denke Demo \ Preview-Funktionen, die noch nicht dokumentiert sind, oder veraltete Dinge, die bereits nicht dokumentiert, aber vorhanden sind).

Aber in Ihrem Fall alles wirklich einfach ist, können Sie dies von Ihnen lokale Maschine tun können:

Update-AzureRmMlWebService -Name 'serviceName' -ResourceGroupName 'resourceGroupName' -ServiceUpdates $wsd -Debug 

Mit dem -debug Schalter wird es Ihnen den REST nennt ihre Durchführung zeigen und die Antwort wird es (zusammen mit viele andere Informationen). Das ist eine gute Möglichkeit zu lernen, wie verschiedene Azure REST-Aufrufe funktionieren. Dies funktioniert für alle Azure Powershell-Cmdlets;). Offensichtlich (oder nicht so offensichtlich) können Sie dasselbe mit Azure Portal mit Fiddler machen.

Verwandte Themen