Deshabilita varios servicios de Server 2016/2019 que molestan más de lo que sirven. Revisar la lista antes de ejecutar.

############################################################################
#
#  Script to disable unneccessary services on `Microsoft Windows Server 2016`
# 
#  Forrest McFaddin
#  2018-09-01
#
 
# Specify log path (Directory of script)
$log_path = $PSScriptRoot
$log_name = ("DisabledServices_"+(Get-Date -Format 'yyyy-MM-dd')+".txt")
 
$disable_userServices = Read-Host "Do you want this script to also disable user specific services [Y/N]"
 
# Create function to disable service if it is not already disabled and/or has no dependent services
function Disable-Service($service_name){
 
$Service_Confirm = (Get-Service -Name $service_name -ErrorAction SilentlyContinue)
    IF($Service_Confirm){
        IF($Service_Confirm.StartType -ne "Disabled"){
        # If service isn't disabled
            IF($Service_Confirm.DependentServices.Count -ne 0){
 
            # If service has dependent services
            return ((Get-Date -format "hh:mm:ss")+" |  SKIPPED  |  " + $service_name + " ("+$Service_Confirm.DisplayName+")" + "  |  Service found to have dependents. Skipped...")
 
            }ELSE{
            # If service doesn't have dependent services, disable it.
            $service_state = (Set-Service -Name $service_name -StartupType Disabled)
            return ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  " +  $service_name + " ("+$Service_Confirm.DisplayName+")" )
            }
 
        }ELSE{
        # IF sevice is already disabled.
        return ((Get-Date -format "hh:mm:ss")+" |  SKIPPED  |  " + $service_name  + " ("+$Service_Confirm.DisplayName+")" + "  |  Service already disabled. No actions taken.")
        }
 
    }
 
}
 
# Check Operating System
$os_version = (Get-WmiObject -Class Win32_operatingSystem).Caption
 
    IF($os_version -notlike "*Server 2016*"){
        Write-Output "This script is intended for Microsoft Windows Server 2016. If you continue, it's likely errors will be generated for services that don't exist on this machine."
        $run = Read-Host "Do you wish to continue? [Y/N]"
            IF($run -ne "Y"){
            return
            }
    } write-output "Continuing..."
 
 
# Create an array with names of services to disable.    
$service_disabled = @()
 
########################################
######### SPECIFY SERVICES #############
########################################
#
#   Bluetooth Support Service
    $service_disabled += "bthserv"
#
#   Xbox Live Auth Manager
    $service_disabled += "XblAuthManager"
#
#   Xbox Live Game Save
    $service_disabled += "XblGameSave"
#
    $service_disabled += "dmwappushservice"
#
#   Downloaded Maps Manager
    $service_disabled += "MapsBroker"
#
#   GeoLocationService
    $service_disabled += "lfsvc"
#
#   Internet Connection Sharing (ICS)
    $service_disabled += "SharedAccess"
#
#   Link-Layer Topology Discovery Mapper
    $service_disabled += "lltdsvc"
#
#   Microsoft Account Sign-in Assistant
    $service_disabled += "wlidsvc"
#
#   Network Connection Broker
    $service_disabled += "NcbService"
#
#   Phone Service
    $service_disabled += "PhoneSvc"
#
#    Print Spooler
#### Check if print spooler role is insalled
    IF((Get-WindowsFeature -Name Print-Server -ErrorAction SilentlyContinue).Installed -eq $false){
    $service_disabled += "Spooler"
    }
#
#    Printer Extensions and Notifications
#### Check if print spooler role is insalled
    IF((Get-WindowsFeature -Name Print-Server -ErrorAction SilentlyContinue).Installed -eq $false){
    $service_disabled += "PrintNotify"
    }
#
#   Program Compatibility Assistant Service
    $service_disabled += "PcaSvc"
#
#   Quality Windows Audio Video Experience
    $service_disabled += "QWAVE"
#
#   Radio Management Service
    $service_disabled += "RmSvc"
#
#   Data Service
    $service_disabled += "SensorDataService"
#
#   Sensor Monitoring Service
    $service_disabled += "SensrSvc"
#
#   Sensor Service
    $service_disabled += "SensorService"
#
#   Smart Card Device Enumeration Service
    $service_disabled += "ScDeviceEnum"
#
#   SSDP Discovery
    $service_disabled += "SSDPSRV"
#
#   Still Image Acquisition Events
    $service_disabled += "WiaRpc"
#
#   Touch Keyboard and Handwriting Panel Service
    $service_disabled += "TabletInputService"
#
#   UPnP Device Host
    $service_disabled += "upnphost"
#
#   Wallet Service
    $service_disabled += "WalletService"
#
#   Windows Camera Frame Server
    $service_disabled += "FrameServer"
#
#   Windows Image Acquisition (WIA)
    $service_disabled += "stisvc"
#
#   Windows Insider Service
    $service_disabled += "wisvc"
#
#   Windows Mobile Hotspot Service
    $service_disabled += "icssvc"
 
# Disable all services
Foreach($item in $service_disabled){
 
$item_action = Disable-Service -service_name $item
$item_action | out-file -FilePath ($log_path+"\"+$log_name) -Append
Write-Output -InputObject $item_action
}
 
# Also disable scheduled tasks for XBOX LIVE
# XBLGameSaveTask
try{Get-ScheduledTask -TaskName "XBLGameSaveTask" -ErrorAction SilentlyContinue | Disable-ScheduledTask
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  XBLGameSaveTask (Windows Scheduled Task)") -Append)
}Catch{
    # Unable to disable scheduled task
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  ERROR  |  XBLGameSaveTask (Windows Scheduled Task)  |  Failed to disable scheduled task.") -Append)
}
 
# XBLGameSaveTaskLogon
try{Get-ScheduledTask -TaskName "XBLGameSaveTaskLogon" -ErrorAction SilentlyContinue | Disable-ScheduledTask
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  XBLGameSaveTaskLogon (Windows Scheduled Task)") -Append)
}Catch{
    # Unable to disable scheduled task
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  ERROR  |  XBLGameSaveTaskLogon (Windows Scheduled Task)  |  Failed to disable scheduled task." ) -Append)
}
 
 
# Disable user specific services, which are created upon login.
# Reference: https://docs.microsoft.com/en-us/windows/application-management/per-user-services-in-windows
 
IF($disable_userServices -eq "Y"){
try{
    REG.EXE ADD HKLM\System\CurrentControlSet\Services\CDPUserSvc /v Start /t REG_DWORD /d 4 /f
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  CDPUserSvc (User Specific Service)" ) -Append)
    REG.EXE ADD HKLM\System\CurrentControlSet\Services\OneSyncSvc /v Start /t REG_DWORD /d 4 /f
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  OneSyncSvc (User Specific Service)" ) -Append)
    REG.EXE ADD HKLM\System\CurrentControlSet\Services\PimIndexMaintenanceSvc /v Start /t REG_DWORD /d 4 /f
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  PimIndexMaintenanceSvc (User Specific Service)" ) -Append)
    REG.EXE ADD HKLM\System\CurrentControlSet\Services\UnistoreSvc /v Start /t REG_DWORD /d 4 /f
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  UnistoreSvc (User Specific Service)" ) -Append)
    REG.EXE ADD HKLM\System\CurrentControlSet\Services\UserDataSvc /v Start /t REG_DWORD /d 4 /f
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  UserDataSvc (User Specific Service)" ) -Append)
    REG.EXE ADD HKLM\System\CurrentControlSet\Services\WpnUserService /v Start /t REG_DWORD /d 4 /f
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  DISABLED  |  WpnUserService (User Specific Service)" ) -Append)
 
    }Catch{
    (out-file -FilePath ($log_path+"\"+$log_name) -InputObject ((Get-Date -format "hh:mm:ss")+" |  ERROR  |  Could create registry keys to disable user specific services." ) -Append)
    }
 
}