更新: 我按照BenV的建议使用Azure Automation成功了! 更多信息可以在这里找到。
我有一个PowerShell脚本需要运行一些Azure命令,如New-AzureStorageContext
、Get-AzureStorageContainer
、Set-AzureStorageBlobContent
等。我想将脚本作为WebJob运行。
当我将此脚本作为WebJob运行时,在Azure命令中遇到以下错误。其他PS命令从WebJob成功运行。
我在StackOverflow上搜索,并没有找到任何关于WebJob中运行Azure命令产生这些错误的帖子。一些相关的帖子提到使用Import-Module
,这与下面给出的建议类似。
一个较旧的MSDN博客文章建议在PS脚本中添加“Import-Module Azure.ps1”,并在webjob zip文件中包含Azure.ps1。(实际上是Azure.psd1,来自我的本地C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure)。另外,我尝试使用Azure.psd1和Azure.ps1进行Import-Module,以便考虑错误是否与文件扩展名相关,但结果并非如此。
我的WebJob .zip文件只有我的.CMD文件、GetLinks.ps1和Azure.ps1。
我的.CMD文件使用以下命令启动我的PS脚本: PowerShell.exe -ExecutionPolicy RemoteSigned -File GetLinks.ps1
在此.ps1文件的顶部,我有: "Import-Module .\Azure.ps1"。这运行成功,因为我在WebJob运行日志中看到了“INFO”语句。
接下来,我的PS脚本尝试运行Azure PS命令,但我仍然会遇到与以下示例错误相同的错误信息。
New-AzureStorageContext : The term 'New-AzureStorageContext' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At D:\local\Temp\jobs\triggered\getlinks2\b2025qk5.ddj\GetLinks.ps1:75 char:19
+ $storageContext = New-AzureStorageContext -StorageAccountName $storageAccountNam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (New-AzureStorageContext:String) [], CommandNotFoundException