Cómo administrar servicios de Windows a través de la línea de comandos

Siempre busco maneras eficientes de gestionar tareas del sistema sin salir de la terminal, incluso cuando estoy usando Windows. En Windows, los servicios se ejecutan en segundo plano para mantener el sistema y las aplicaciones funcionando sin problemas. En lugar de abrir el Administrador de Servicios, prefiero administrar los Servicios de Windows a través de la línea de comandos. En esta guía, exploraremos estos métodos y veremos cómo puedes gestionar los servicios de Windows directamente desde el terminal.
1. Administrar servicios de Windows con sc.exe
sc.exe es una herramienta de línea de comandos integrada para administrar servicios de Windows. Te permite configurar, consultar y controlar servicios directamente desde el terminal. Con sc.exe, tienes control total sobre los servicios de Windows sin necesidad del gráfico Administrador de Servicios.
Verificar el estado del servicio con sc
Podemos usar el comando sc query serviceName para verificar el estado de un servicio específico. Por ejemplo, ejecutamos el comando sc query MySQL80 para recuperar detalles sobre el servicio MySQL80, incluido su estado:

Actualmente, MySQL no se está ejecutando en nuestra máquina.
Iniciar un servicio con sc
Para iniciar un servicio específico usando sc.exe, podemos usar el comando sc start ServiceName. Por ejemplo, ejecutamos sc start MySQL80 para iniciar el servicio MySQL80. Para verificar si el servicio ha comenzado con éxito, podemos consultar su estado usando el comando sc query MySQL80:

Detener un servicio con sc
Puedes detener un servicio para liberar recursos del sistema. Por ejemplo, el comando sc stop MySQL80 detiene MySQL, lo que se puede verificar usando el comando sc query MySQL80:

Crear un nuevo servicio con sc
Podemos crear un nuevo servicio utilizando el comando sc create. Esto requiere especificar el nombre del servicio, la ruta del ejecutable y el tipo de inicio. Por ejemplo, para crear un nuevo servicio llamado “mte” que se iniciará automáticamente al arrancar, escribe:
sc create mte binPath="C:\Users\HP\Desktop\Examples\Service.exe" start= autoActualizar un servicio con sc
Podemos usar el comando sc config para configurar un servicio existente. Por ejemplo, para cambiar el tipo de inicio a manual, ejecuta el comando:
sc config serviceName start= demandEliminar un servicio con sc
Cuando un servicio ya no es necesario, podemos eliminarlo permanentemente de Windows usando el comando:
sc delete serviceName2. Administrar servicios de Windows con el comando Net
El comando net en Windows nos permite administrar servicios desde la línea de comandos. Permite a los usuarios iniciar, detener, pausar, reanudar y consultar servicios sin usar el gráfico Administrador de Servicios.
Iniciando y deteniendo servicios con el comando net
Podemos iniciar o detener servicios de Windows con los comandos net start serviceName y net stop serviceName, respectivamente:

Pausar y reanudar servicios con el comando net
Algunos servicios de Windows admiten pausar y reanudar en lugar de una detención completa. En ese caso, podemos usar los comandos net pause ServiceName y net continue ServiceName, respectivamente:

Verificar el estado del servicio con el comando net
El comando net en sí no proporciona un modo directo de verificar el estado de un servicio específico, pero podemos usarlo junto con el comando findstr para filtrar los resultados. Por ejemplo, para verificar si el servicio especificado se está ejecutando, escribe:
net start | findstr "ServiceName"Si el servicio especificado se está ejecutando, el comando devuelve su nombre; de lo contrario, no hay salida.
Administrar servicios de forma remota con el comando net
Podemos usar el comando net para administrar servicios en computadoras remotas especificando el nombre de la computadora. Por ejemplo, se utilizan los comandos net start ServiceName /S RemotePC y net stop ServiceName /S RemotePC para iniciar o detener servicios en una computadora remota.
3. Administrar servicios de Windows con cmdlets de PowerShell
PowerShell ofrece un control más avanzado sobre los servicios de Windows con cmdlets integrados como Get-Service, Start-Service, Stop-Service y Restart-Service. Estos cmdlets permiten a los usuarios verificar el estado de un servicio, iniciarlo o detenerlo, e incluso reiniciarlo cuando sea necesario.
Los cmdlets de PowerShell proporcionan una salida detallada, incluido el estado del servicio, el nombre para mostrar y los servicios dependientes. Estos cmdlets permiten la creación de scripts y la automatización, lo que resulta útil para administrar varios servicios de manera eficiente.
La flexibilidad y las características potentes de PowerShell lo convierten en la herramienta preferida para los administradores que gestionan servicios de Windows.
Obtener estado del servicio con cmdlets
Podemos usar el cmdlet Get-Service -Name ServiceName para obtener detalles sobre el servicio especificado. Por ejemplo, el siguiente comando devuelve el estado del servicio MySQL80, mostrando si se está ejecutando o detenido:
Get-Service -Name MySQL80
Consultar servicios con cmdlets de PowerShell
Podemos usar el comando Get-Service para consultar los servicios en función de criterios específicos. Por ejemplo, podemos recuperar todos los servicios que se están ejecutando actualmente usando el comando:
Get-Service | Where-Object {$_.Status -eq 'Running'}
Iniciar y detener servicios con cmdlets de PowerShell
Podemos iniciar o detener un servicio específico utilizando los cmdlets Start-Service y Stop-Service, respectivamente. Por ejemplo, usamos comandos de PowerShell para iniciar, detener y verificar el estado del servicio MySQL80:
Start-Service -Name MySQL80
Stop-Service -Name MySQL80
Get-Service -Name MySQL80
Cambiar tipo de inicio del servicio con cmdlets de PowerShell
Los cmdlets de PowerShell nos permiten actualizar el tipo de inicio del servicio. Por ejemplo, podemos ejecutar los siguientes cmdlets para configurar un servicio para que se inicie automáticamente con el sistema, requiera inicio manual o esté deshabilitado, respectivamente:
Set-Service -Name ServiceName -StartupType Automatic
Set-Service -Name ServiceName -StartupType Manual
Set-Service -Name ServiceName -StartupType DisabledEstos cmdlets ayudan a los administradores a gestionar el comportamiento de los servicios de manera eficiente, asegurando que los servicios esenciales se inicien según sea necesario mientras se evita que los innecesarios se ejecuten.
Administrar servicios remotos con cmdlets
PowerShell también permite administrar servicios en computadoras remotas especificando los nombres de las computadoras remotas. Por ejemplo, el comando Get-Service -Name ServiceName -ComputerName RemotePC recupera el estado de un servicio específico que se ejecuta en una computadora remota llamada RemotePC, permitiendo a los administradores supervisar servicios de forma remota.
De manera similar, el comando Restart-Service -Name ServiceName -ComputerName serviceName intenta reiniciar el servicio especificado en una computadora remota. Asegura que el servicio se reinicie sin requerir acceso directo a la máquina. Sin embargo, la gestión remota de servicios requiere permisos apropiados y que el uso de PowerShell remoto esté habilitado.
4. Automatizar tareas de gestión de servicios
Los scripts de PowerShell permiten automatizar la gestión de servicios, haciendo que sea más fácil supervisar y controlar los servicios de Windows sin intervención manual. Podemos crear un script que verifique continuamente el estado de un servicio específico y lo reinicie si se detiene inesperadamente.
Por ejemplo, el siguiente script verifica si el servicio MySQL80 se está ejecutando y lo reinicia si se detiene:
$serviceName = "MySQL80"
$service = Get-Service -Name $serviceName
if($service.Status -ne "Running"){
Restart-Service -Name $serviceName -Force
Write-Output "$serviceName fue detenido y ha sido reiniciado."
}else{
Write-Output "$serviceName ya se está ejecutando."
}Por defecto, Windows restringe la ejecución de scripts. Para habilitar la ejecución, primero, ejecuta el comando:
Set-ExecutionPolicy RemoteSignedAhora navega a la ubicación del script y ejecuta el comando .\serviceScript.ps1 para ejecutar el script:
Administrar servicios de Windows desde la línea de comandos te da control total sin depender del gráfico Administrador de Servicios. Ya sea que uses sc.exe, net o los cmdlets de PowerShell, cada método ofrece formas eficientes de iniciar, detener y configurar servicios.
Las capacidades de scripting de PowerShell facilitan la automatización, permitiendo que monitorees y gestiones servicios sin esfuerzo. Al dominar estas herramientas, puedes solucionar problemas, optimizar el rendimiento del sistema y asegurar que los servicios críticos funcionen sin inconvenientes.
Para más maneras de optimizar tu sistema Windows y solucionar problemas comunes, consulta estas guías sobre cómo solucionar problemas de Windows y optimizar tu PC para mejor rendimiento.