[CmdletBinding()]
    param (
        [string]
        $ComputerName,

        [int]
        $CPU = 1,
        
        [int]
        $MemoryGB = 4,

        [int]
        $DiskOsGB = 128,

        [int]
        $DiskDataGB = 0,

        [string]
        $Subnet,

        [string]
        $OS,

        [string]
        $Environment,

        [string]
        $Subscription,
        
        [string]
        $AppName,

        [string]
        $LicensingRestrictions
    )

$params = @{
    ComputerName = $ComputerName;
    CPU = $CPU;
    MemoryGB = $MemoryGB;
    DiskOsGB = $DiskOsGB;
    DiskDataGB = $DiskDataGB;
    Subnet = $Subnet;
    OS = $OS;
    Environment = $Environment;
    Subscription = $Subscription;
    AppName = $AppName;
    LicensingRestrictions = $LicensingRestrictions;
    Credential = $Credential;
}

Write-Verbose -Message "Connect to Azure using Service Principal" -Verbose
$tenantId = '2dea0464-da51-4a88-bae2-b3db94bc0c54'
$AppId = '60244573-7130-4026-9c6d-47de73f8ca29'
$SecureStringPwd = 'Pqt8Q~E-dDmQugcPPWdaK2t_4retS41VVVVOZbOx' # $Secret:AzureVMServicePrincipal # $IaasAutoAzApp
$PSCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $AppId, ($SecureStringPwd | ConvertTo-SecureString -AsPlainText -Force)
Connect-AzAccount -ServicePrincipal -Credential $PSCredential -Tenant $tenantId

New-ITDWindowsVmAzure @params -Credential $PrvCred -Verbose