Navigation
Logo

Azure Automation Portal

VM Life Cycle Management
Manage the complete lifecycle of your virtual machines from creation to deletion
# Azure VM Creation Script
param(
    [Parameter(Mandatory=$true)]
    [string]$resourceGroupName,
    [Parameter(Mandatory=$true)]
    [string]$vmName,
    [Parameter(Mandatory=$true)]
    [string]$location,
    [Parameter(Mandatory=$true)]
    [string]$adminUsername,
    [Parameter(Mandatory=$true)]
    [SecureString]$adminPassword,
    [string]$vmSize = "Standard_DS2_v2"
)

# Connect to Azure
Connect-AzAccount

# Create Resource Group
New-AzResourceGroup -Name $resourceGroupName -Location $location

# Create Network Security Group
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDP" -Protocol Tcp `
  -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
  -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow

$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroupName `
  -Location $location -Name "$vmName-NSG" -SecurityRules $nsgRuleRDP

# Create Virtual Network
$subnet = New-AzVirtualNetworkSubnetConfig -Name "default" `
  -AddressPrefix "10.0.0.0/24" -NetworkSecurityGroup $nsg

$vnet = New-AzVirtualNetwork -Name "$vmName-VNET" -ResourceGroupName $resourceGroupName `
  -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $subnet

# Create Public IP
$pip = New-AzPublicIpAddress -Name "$vmName-PIP" -ResourceGroupName $resourceGroupName `
  -Location $location -AllocationMethod Dynamic

# Create Network Interface
$nic = New-AzNetworkInterface -Name "$vmName-NIC" -ResourceGroupName $resourceGroupName `
  -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id

# Create VM Configuration
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
$vmConfig = Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName `
  -Credential (New-Object PSCredential ($adminUsername, $adminPassword))
$vmConfig = Set-AzVMSourceImage -VM $vmConfig -PublisherName "MicrosoftWindowsServer" `
  -Offer "WindowsServer" -Skus "2019-Datacenter" -Version "latest"
$vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id

# Create VM
New-AzVM -ResourceGroupName $resourceGroupName -Location $location -VM $vmConfig