Export/Private/New-ApplicationGatewayNetworkSetup.ps1

function Global:New-ApplicationGatewayNetworkSetup {
    <#
    .SYNOPSIS
    ...
     
    .EXAMPLE
    ...
     
    .PARAMETER xxx
    ...
    #>

    [CmdletBinding()]    
    param
    (
        [Parameter(Mandatory = $true)]
        $VirtualNetworkResourceGroupName,
        [Parameter(Mandatory = $true)]
        $VirtualNetworkName,
        [Parameter(Mandatory = $true)]
        $SubnetName,
        [Parameter(Mandatory = $true)]
        $SubnetAddressPrefix,
        [Parameter(Mandatory = $false)]
        [switch]
        $IncludeSsl
    )
    process {
        $NetworkSetup = @{
            VirtualNetwork         = $null
            Subnet                 = $null
            GatewayIPConfiguration = $null
        }
        Write-Verbose "Getting VirtualNetwork $VirtualNetworkName..."
        $NetworkSetup.VirtualNetwork = Get-AzVirtualNetwork -Name $VirtualNetworkName -ResourceGroupName $VirtualNetworkResourceGroupName
        Write-Verbose "Getting SubnetConfiguration $SubnetName..."
        $NetworkSetup.Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $NetworkSetup.VirtualNetwork -ErrorAction SilentlyContinue
        if (-not($NetworkSetup.Subnet)) {
            Write-Verbose "Adding Subnet $SubnetName to Virtual Network $VirtualNetworkName"
            $NetworkSetup.VirtualNetwork = Add-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $NetworkSetup.VirtualNetwork -AddressPrefix $SubnetAddressPrefix -WarningAction SilentlyContinue
            $NetworkSetup.VirtualNetwork | Set-AzVirtualNetwork | Out-Null
            $NetworkSetup.VirtualNetwork = Get-AzVirtualNetwork -Name $VirtualNetworkName -ResourceGroupName $VirtualNetworkResourceGroupName
            $NetworkSetup.Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $NetworkSetup.VirtualNetwork
        }
        Write-Verbose "Adding IPConfiguration..."
        $NetworkSetup.GatewayIPConfiguration = New-AzApplicationGatewayIPConfiguration -Name "GatewayIpConfig01" -Subnet $NetworkSetup.Subnet
        $NetworkSetup
    }
}