Public/Update-CPCOrganizationSettings.ps1

function Update-CPCOrganizationSettings {
    <#
    .SYNOPSIS
    Update the Cloud PC organization settings
    .DESCRIPTION
    Update the Cloud PC organization settings. A tenant has only one cloudPcOrganizationSettings object.
    .PARAMETER osVersion
    The account type of the user on provisioned Cloud PCs. The possible values are: standardUser, administrator
    .PARAMETER userAccountType
    The account type of the user on provisioned Cloud PCs. The possible values are: standardUser, administrator
    .PARAMETER enableMEMAutoEnroll
    Specifies whether new Cloud PCs will be automatically enrolled in Microsoft Intune. The default value is false.
    .PARAMETER enableSingleSignOn
    Specifies wether single sign-on is enabled for new Cloud PCs. The default value is false.
    .EXAMPLE
    Update-CPCOrganizationSettings -osVersion windows10 -userAccountType administrator -enableMEMAutoEnroll $true -enableSingleSignOn $true
    .NOTES
    #>

    [CmdletBinding()]
    param (
        [parameter(Mandatory = $false)]
        [ValidateSet("windows10", "windows11")]
        [string]$OSVersion,
        [parameter(Mandatory = $false)]
        [ValidateSet("standardUser", "administrator")]
        [string]$UserAccountType,
        [parameter(Mandatory = $false)]
        [bool]$EnableMEMAutoEnroll,
        [parameter(Mandatory = $false)]
        [bool]$EnableSingleSignOn,
        [parameter(Mandatory = $false)][string]$WindowsSettings
    )
    Begin {
        Get-TokenValidity
        
        $url = "https://graph.microsoft.com/$script:MSGraphVersion/deviceManagement/virtualEndpoint/organizationSettings"
        Write-Verbose "Update url: $($url)"
        $params = @{}
        
        If ($osVersion) {
            $params.Add("osVersion", "$OSVersion")
            Write-Verbose "osVersion: $($OSVersion)"
        }
        If ($userAccountType) {
            if ($userAccountType -eq "administrator") {
                Write-Warning "The administrator account type is not recommended for production use."
            }
            $params.Add("userAccountType", "$UserAccountType")
            Write-Verbose "userAccountType: $($UserAccountType)"
        }
        If ($psboundparameters.ContainsKey("enableMEMAutoEnroll")) {
            $params.Add("enableMEMAutoEnroll", "$EnableMEMAutoEnroll")
            Write-Verbose "enableMEMAutoEnroll: $($EnableMEMAutoEnroll)"
        }
        If ($PSBoundParameters.ContainsKey("enableSingleSignOn")) {
            $params.Add("enableSingleSignOn", "$EnableSingleSignOn")
            Write-Verbose "enableSingleSignOn: $($EnableSingleSignOn)"
        }
        If ($windowsSettings) {
            $params += @{windowsSettings = @{"language" = "$WindowsSettings" } }
            Write-Verbose "windowsSettings: $($WindowsSettings)"
            
        }
    }
    Process {
        $body = $params | ConvertTo-Json -Depth 10
        Write-Verbose "Body: $($body)"
        try {
            Write-Verbose "Updating Organization Settings "
            $result = Invoke-WebRequest -uri $url -Method PATCH -Headers $script:authHeader -Body $body -ContentType "application/json" -SkipHttpErrorCheck
            $result
            
        }
        catch {
            Throw $_.Exception.Message
        }
    }
}