Private/New-Workspace.ps1

function New-Workspace {
    [CmdletBinding()]
    param (
        [parameter(Mandatory)]
        [string]$Workspace,

        [parameter()]
        [ValidateSet("CapacityReservation", "Free", "LACluster", "PerGB2018", "PerNode", "Premium", "Standalone", "Standard")]
        [string]$Sku = "Standard",

        [parameter()]
        [string]$ResourceGroupName,
    
        [parameter()]
        [string]$Location,

        [parameter()]
        [int]$RetentionInDays
    )
    try {
        if ($null -eq $LAWorkspace) {
            $LAWorkspace = "log-analytics-avd-" + (Get-Random -Maximum 99999)
            Write-Verbose "No Log Analytics Workspace provided, creating a new one."
            Write-Verbose "Workspace name: $LAWorkspace"    
        } 
        $body = @{
            location   = $Location
            properties = @{
                retentionInDays = $RetentionInDays
                sku             = @{
                    name = $Sku
                }
            }
        }
        $url = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.OperationalInsights/workspaces/{3}?api-version={4}" -f $Script:AzureApiUrl, $script:subscriptionId, $ResourceGroupName, $Workspace, $script:diagnosticsApiVersion
        $loganalyticsParameters = @{
            URI     = $url 
            Method  = "PUT"
            Body    = $body | ConvertTo-Json
            Headers = $token
        }
        Invoke-RestMethod @loganalyticsParameters
    }
    catch {
        Throw $_

    }
}