我使用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中的登录?我必须通过我的实时身份凭证吗?
答案 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中执行相同的操作。