Public/Set-UAC.ps1

function Set-UAC {

    <#
    .Description
    This function can Enable/Disable UserAccountControl entirely or just the Prompt Behavior

    .PARAMETER Disable
    Disables UAC entirely

    .PARAMETER DisablePrompt
    Disables UAC prompting only but leaves UAC enabled

    .PARAMETER Enable
    Enables UAC

    .Example
    Disabled UAC Prompting for Admins, but keeps UAC enabled

    Set-UACState -DisablePrompt

    .Example
    Disabled UAC Entirely

    Set-UACState -Disable

    .Example
    Enable UAC Entirely

    Set-UACState -Enable
    #>


    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ParameterSetName = 'Disable')][switch]$Disable,
        [Parameter(Mandatory = $true, ParameterSetName = 'DisablePrompt')][switch]$DisablePrompt,
        [Parameter(Mandatory = $true, ParameterSetName = 'Enable')][switch]$Enable
    )

    #Check for Admin Privleges
    Get-Elevation

    if ($Disable) {
        reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /f /v "ConsentPromptBehaviorAdmin" /t reg_dword /d 0
        reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /f /v "EnableLUA" /t reg_dword /d 0
    }

    if ($DisablePrompt) {
        reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /f /v "ConsentPromptBehaviorAdmin" /t reg_dword /d 0
    }

    if ($Enable) {
        reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /f /v "ConsentPromptBehaviorAdmin" /t reg_dword /d 2
        reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /f /v "EnableLUA" /t reg_dword /d 1
    }
}