Search code examples
azureazure-powershellazure-automationazure-marketplaceazure-vm-templates

The term 'Set-AzureRmVMPlan' is not recognized as the name of a cmdlet


I am trying to create a VM on Azure using powershell script in Azure Automation. This VM is to be created from marketplace. So I need to use cmdlet 'Set-AzureRmVMPlan' in my script.

$vm = New-AzureRmVMConfig -VMName $inVMName -VMSize $vmSize

Set-AzureRmVMPlan -VM $vm -Publisher "kali-linux" -Product "kali-linux" -Name "kali"

This script works fine when I run it from Powershell ISE however when I put this command in Azure Automation Runbook then Azure doesn't recognize this command. I get below error,

Set-AzureRmVMPlan : The term 'Set-AzureRmVMPlan' 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 restore-vhd-backups:8 char:8

    • CategoryInfo : ObjectNotFound: (Set-AzureRmVMPlan:String) [], CommandNotFoundException

    • FullyQualifiedErrorId : CommandNotFoundException

So I further investigate and found that this command is not available in cmdlet list at page "Edit PowerShell Runbook" (see below image) CMDLET List in Azure Portal Automation Runbook Edit CMDLET in Powershell ISE

I also got to know that this cmdlet was added in Azure Powershell last year from below link

How to include "Plan information" when creating ARM VM from a captured image using Powershell?

Can someone help me on this?


Solution

  • So what is happening here, Azure Automation uses the old version of the Module, you have to go to Azure Automation Blade > Assets > Modules > Browse Gallery and reimport AzureRM.Profile and AzureRM.Compute.

    reference image reference image