El cmdlet de PowerShell Get-Service permite visualizar el listado de servicios que están tanto en ejecución como parados dentro de un sistema Windows, junto con la posibilidad de utilizar parámetros y filtros para afinar la búsqueda. Es interesante conocer este ejecutable ya que a través de la herramienta gráfica services.msc no está disponible toda la información de los servicios.
Vamos a ir al grano mostrando una serie de ejemplos útiles en el día a día.
Ejecución de get-service sin parámetros
PS C:\Users\Administrator> Get-Service Status Name DisplayName ------ ---- ----------- Running AeLookupSvc Application Experience Stopped ALG Application Layer Gateway Service Stopped AppIDSvc Application Identity Running Appinfo Application Information Stopped AppMgmt Application Management Stopped AppReadiness App Readiness Stopped AppXSvc AppX Deployment Service (AppXSVC) Stopped AudioEndpointBu... Windows Audio Endpoint Builder Stopped Audiosrv Windows Audio Stopped AxInstSV ActiveX Installer (AxInstSV) Running BFE Base Filtering Engine Running BITS Background Intelligent Transfer Ser... Running BrokerInfrastru... Background Tasks Infrastructure Ser... Stopped Browser Computer Browser Running CcmExec SMS Agent Host Running CertPropSvc Certificate Propagation Stopped CmRcService Configuration Manager Remote Control Running COMSysApp COM+ System Application Running CryptSvc Cryptographic Services Stopped CscService Offline Files Running DcomLaunch DCOM Server Process Launcher Stopped defragsvc Optimize drives Stopped DeviceAssociati... Device Association Service Stopped DeviceInstall Device Install Service Running Dhcp DHCP Client [...}
Esto mostrará un listado de los servicios arrancados/parados del sistema local en orden alfabético.
Listado de servicios de un equipo remoto
PS C:\> Get-Service -Computername foo
Este ejemplo, al igual que el anterior, muestra un listado de los servicios en orden alfabético, pero de un sistema remoto con nombre de equipo foo.
También se puede consultar la información de varios equipos a la vez si los separamos con comas:
PS C:\> Get-Service -Computername foo,bar
Ordenar la salida por una de las columnas
Concatenando con pipes podemos ordenar la salida en función de una de las columnas:
PS C:\> get-service | sort-object status
Uso de expresiones regulares/comodines
Con el objetivo de filtrar el resultado, se pueden utilizar comodines y/o expresiones regulares:
PS C:\> get-service wmi*
También se pueden seleccionar los resultados que coincidan con un valor concreto en una de las columnas:
PS C:\> Get-Service -ComputerName foo -Name SERVICE01 | Get-Member -MemberType Properties
Usar condicionales para filtrar resultados
El siguiente ejemplo muestra únicamente los servicios cuyo estado es running (en ejecución):
PS C:\> Get-Service | Where {$_.Status -eq "Running"}
Un ejemplo algo más elaborado que, además especifica con un condicional que el nombre comienza por F:
PS C:\> Get-Service | where {($_.Name -like "F*")-and ($_.Status -eq "Running")}
Formato de salida
Concatenando con el comando format
se puede especificar las columnas a mostrar, por ejemplo:
PS C:\> get-wmiobject FOO | where-object {$_.Name -eq 'BAR'} | format-list Name, Description
Consultar ayuda del servicio
Quizás el punto más importante. Para consultar la ayuda y visualizar ejemplos del CMDLET, ejecutad el comando:
PS C:\> Get-help Get-Service -full
PS C:\> Get-help Get-Service -example