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        
    }
}