#Variable
$rgName = Read-Host -Prompt 'Resource Group name';
$locName = 'West Europe';
#Create Resource Group
New-AzureRmResourceGroup -Name $rgName -Location $locName ;
#Create Availability Set
$asName = Read-Host -Prompt 'Availability Set name'
New-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $asName -Location $locName -PlatformUpdateDomainCount 2 -PlatformFaultDomainCount 2
$AvID = (Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $AsName).id
#Create subnet
$newSubnetParams = @{
'Name' = Read-Host -Prompt 'Subnet name'
'AddressPrefix' = '10.0.0.0/24'
}
$subnet = New-AzureRmVirtualNetworkSubnetConfig @newSubnetParams
#Create VirtualNet
$newVNetParams = @{
'Name' = Read-Host -Prompt 'Network Name'
'ResourceGroupName' = $rgName
'Location' = $locName
'AddressPrefix' = '10.0.0.0/16'
}
$vNet = New-AzureRmVirtualNetwork @newVNetParams -Subnet $subnet
#Create Storage Account
$newStorageAcctParams = @{
'Name' = Read-Host -Prompt 'Storage Account name (lowercase)'
'ResourceGroupName' = $rgName
'Type' = 'Standard_LRS'
'Location' = $locName
}
$storageAccount = New-AzureRmStorageAccount @newStorageAcctParams
#Create Public IP
$newPublicIpParams = @{
'Name' = Read-Host -Prompt 'Label Public IP'
'ResourceGroupName' = $rgName
'AllocationMethod' = 'Dynamic' ## Dynamic or Static
'DomainNameLabel' = Read-Host -Prompt 'DNS name'
'Location' = $locName
}
$publicIp = New-AzureRmPublicIpAddress @newPublicIpParams
#Create NIC
$newVNicParams = @{
'Name' = Read-Host -Prompt 'NIC Name'
'ResourceGroupName' = $rgName
'Location' = $locName
}
$vNic = New-AzureRmNetworkInterface @newVNicParams -SubnetId $vNet.Subnets[0].Id -PublicIpAddressId $publicIp.Id
#Config VM - General
$newConfigParams = @{
'VMName' = Read-Host -Prompt 'VM name'
'VMSize' = 'Standard_A1'
'AvailabilitySetId' = $AvID
}
$vmConfig = New-AzureRmVMConfig @newConfigParams
#Config VM - Operating System
$newVmOsParams = @{
'Windows' = $true
'ComputerName' = $newConfigParams.VmName
'Credential' = (Get-Credential -Message 'Type the name and password of the local administrator account.')
'ProvisionVMAgent' = $true
'EnableAutoUpdate' = $true
}
$vm = Set-AzureRmVMOperatingSystem @newVmOsParams -VM $vmConfig
#Config VM - Image
$newSourceImageParams = @{
'PublisherName' = 'MicrosoftWindowsServer'
'Version' = 'latest'
'Skus' = '2012-R2-Datacenter'
}
$offer = Get-AzureRmVMImageOffer -Location $locName -PublisherName MicrosoftWindowsServer
$vm = Set-AzureRmVMSourceImage @newSourceImageParams -VM $vm -Offer $offer.Offer
#Attach NIC to VM
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $vNic.Id
#Config VM - Disk
$Saname = $newStorageAcctParams.name
$VmName = $newConfigParams.VmName
$osDiskName = $vmName+'_os'
$osDiskUri = 'https://'+$saname+'.blob.core.windows.net/vhds/'+$osDiskName+'.vhd'
$newOsDiskParams = @{
'Name' = $osDiskName
'CreateOption' = 'fromImage'
}
$vm = Set-AzureRmVMOSDisk @newOsDiskParams -VM $vm -VhdUri $osDiskUri
#Create Vm
New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $locName