server_2016_services
This is an old revision of the document!
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)
}
}
server_2016_services.1605478326.txt.gz · Last modified: 2024/10/17 21:42 (external edit)
