运行涉及AzureRM作为Azure webjob的powershell脚本

时间:2017-10-30 19:40:48

标签: powershell azure

我使用PowerShell的经验很少,所以这可能是一个显而易见的问题。

我正在尝试将powershell脚本作为webjob运行。这些脚本的唯一目的是通过AzureRM库刷新端点。

我已设法在本地执行此操作,它看起来像这样:

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

我需要能够从我的网站上命令运行这个脚本,所以我想创建一个webjob,因为它是要走的路。但是,在webjob端运行我的脚本的powershell似乎没有“安装模块”,也没有AzureRM,所以我觉得有点卡住了。 我尝试将AzureRM连接到它,但是有一个50 MB的限制,AzureRM是500+(100 +压缩)。

[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.

我应该怎么做?

另外还有一个问题:如何处理webjob中的登录?我必须通过我的实时身份凭证吗?

1 个答案:

答案 0 :(得分:1)

只是将评论转换为答案+让您更好地了解Azure的工作原理。

一切都是Azure中的REST API调用。如果您可以在Azure中执行某些操作(或者可以在门户中使用,或者您在某些演示中看到它) - 那么就会有一个REST调用。它可能会或可能不会被记录,这是另一回事(想想尚未记录的演示\预览功能,或已弃用但尚未记录但已存在的东西)。

但在你的情况下,一切都很简单,你可以从本地机器上做到这一点:

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

使用-debug开关,它将显示其执行的REST调用及其获得的答案(以及许多其他信息)。这是学习不同Azure REST调用如何工作的好方法。这适用于任何Azure Powershell cmdlet;)。显然(或不那么明显),您可以使用fiddler在Azure Portal中执行相同的操作。