public/Set-DsWindowsTelemetry.ps1


function Set-DsWindowsTelemetry {
    <#
    .SYNOPSIS
        Set-DsWindowsTelemetry
    .DESCRIPTION
        Disable Windows 10 Telemetry Collection and Upload
        Disable Connected User Experiences service, and WAP Push service
    .PARAMETER State
        Enable or Disable
    .LINK
        https://github.com/Skatterbrainz/ds-utils/blob/master/docs/Disable-DsWindowsTelemetry.md
    #>

    [CmdletBinding()]
    [OutputType()]
    param (
        [parameter(Mandatory)]
        [ValidateSet('Enable','Disable')][string] $State
    )
    try {
        Write-DsLog -Message "setting windows telemetry to $State"
        if ($State -eq 'Disable') {
            New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection' -Name 'AllowTelemetry' -ItemType DWORD -Value 0 -Force
            Get-Service -Name "diagtrack" | Stop-Service -Force -ErrorAction SilentlyContinue
            Set-Service -Name "diagtrack" -StartupType "Disabled" -ErrorAction SilentlyContinue
            Set-Service -Name "dmwappushsvc" -StartupType "Disabled" -ErrorAction SilentlyContinue
        }
        else {
            New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection' -Name 'AllowTelemetry' -ItemType DWORD -Value 1 -Force
            Set-Service -Name "diagtrack" -StartupType "Manual" -ErrorAction SilentlyContinue
            Set-Service -Name "dmwappushsvc" -StartupType "Manual" -ErrorAction SilentlyContinue
        }
    }
    catch {
        Write-DsLog -Message $Error[0].Exception.Message -Category Error
    }
}