Private/New-CustomAzVmss.ps1
# Will be called in VM function Global:New-CustomAzVmss { [CmdletBinding()] <# .SYNOPSIS ... .DESCRIPTION ... #> param( [Parameter(Mandatory = $true)] [string] $ResourceGroupName, [Parameter(Mandatory = $true)] [string] $ResourceLocation, [Parameter(Mandatory = $true)] [string] $Name, [Parameter(Mandatory = $true)] [string] $BaseImageName, [Parameter(Mandatory = $true)] [string] $VMSize, [Parameter(Mandatory = $true)] [PSCredential] $VMCredentials, [Parameter(Mandatory = $true)] [string] $ComputerNamePrefix, [Parameter(Mandatory = $true)] [string] $NetworkIPConfigName, [Parameter(Mandatory = $true)] [string] $LoadBalancerName, [Parameter(Mandatory = $true)] [string] $FrontendIpConfigName, [Parameter(Mandatory = $true)] [string] $VirtualNetworkName, [Parameter(Mandatory = $true)] [string] $SubnetName, [Parameter(Mandatory = $false)] [string] $SubnetAddressPrefix, [Parameter(Mandatory = $true)] [switch] $CreatePublicIP, [Parameter(Mandatory = $true)] [string] $BackendAddressPoolName ) process { Write-CustomHost -Message "Creating Scale Set..." $VNet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroupName -Name $VirtualNetworkName -ErrorAction SilentlyContinue $VMSSIPCfg = New-AzVmssIPConfig -Name 'netcfg1' -SubnetId $VNet.Subnets[0].Id $AdminUsername = $creds.UserName $AdminPassword = $vmadminPass $VMSS = New-AzVmssConfig -Location $ResourceLocation -SkuCapacity 1 -SkuName "Standard_A2" -UpgradePolicyMode "Automatic" ` | Add-AzVmssNetworkInterfaceConfiguration -Name "Test" -Primary $True -IPConfiguration $VMSSIPCfg ` | Set-AzVmssOSProfile -ComputerNamePrefix "Test" -AdminUsername $AdminUsername -AdminPassword $AdminPassword ` | Set-AzVmssStorageProfile -OsDiskCreateOption 'FromImage' -OsDiskCaching "None" ` -ImageReferenceId (Get-AzImage -ImageName $BaseImageName -ResourceGroupName $resourceGroupName).Id $VMSS New-AzVmss -ResourceGroupName $ResourceGroupName -Name $Name -VirtualMachineScaleSet $VMSS; return } } |