Después de varias entradas vamos a ver con más detalle algunos de los comandos básicos que vamos a utilizar cuando usemos PowerShell
Where-Object
Es el principal comando que utilizamos para filtrar los resultados obtenidos por otro cmdlet. Básicamente lo que se hace es comprobar alguna de las propiedades del objeto de entrada y redirigirlo a la salida sólo si cumple la condición indicada.
Hasta la versión 3, cuando se utiliza el Where-Object y tenemos como entrada varios objetos, podríamos decir que los evalúa uno a uno, y en el momento en el que se procesa ese objeto se asigna a la variable $_.
Veamos un ejemplo:
Si queremos obtener los servicios cuyo nombre empieza por “s” podemos hacer los siguiente:
1 |
Get-Service -Name s* |
Pero también podemos hacer
1 |
Get-Service | Where-Object { $_.Name -like "s*" } |
y obtenemos el mismo resultado.
O con la nueva nomenclatura de PowerShell 3.0
1 |
Get-Service | Where-Object Name -like "s*" |
Y podemos canalizar distintos filtrados
1 |
Get-Service | Where-Object Name -like "s*" | Where-Object Status -eq "running" |
Select-Object
Con este cmdlet lo que podemos es seleccionar los campos del objeto u objetos del resultado final que queremos obtener, de forma que no tengamos el objeto con todas sus propiedades sino solo las que nosotros necesitamos. También nos permite obtener un número concreto de objetos, por ejemplo, los 10 primeros de un resultado.
Vamos con los ejemplos
1 |
Get-Process -Name s* |
Vemos que nos muestra una cantidad de objetos y unas propiedades concretas
Podemos cambiar las propiedades que se muestran de la siguiente manera
1 |
Get-Process -Name s* | Select-Object id, Processname, Starttime -First 5 |
Podemos eliminar resultados repetidos con el parámetro -Unique
1 |
Get-Process -Name s* | Select-Object ProcessName |
Y ahora con el parámetro -Unique
1 |
Get-Process -Name s* | Select-Object ProcessName -Unique |
También podemos crear propiedades personalizadas para mostrar información a partir de otras propiedades.
1 |
Get-Process S* | Select-Object Processname, StartTime, @{Name="Horas en ejecucion";Expression={((Get-Date) - $_.StartTime).Hours}} |
También tenemos la opción de que si una de las propiedades que mostramos está compuesta por un grupo de objetos, podamos mostrar toda la información con el parámetro
1 |
Get-Service Winmgmt | Select Name, DependentServices |
Vemos que la propiedad DependentServices no se muestra completa, al contener varios objetos
Ahora con el parámetro -ExpandProperty podemos ver todo su contenido
1 |
Get-Service Winmgmt | Select Name, DependentServices | Select-Object -ExpandProperty DependentServices |
Sort-Object
Nos permite ordenar un conjunto de objetos según la propiedad indicada. Por defecto los ordena de forma ascendente tanto alfabética como numéricamente. Podemos indicar varias propiedades a partir de las cuales ordenar los objetos
1 |
Get-Service | Select-Object -First 20 |
Ahora los podemos ordenar según otra propiedad
1 |
Get-Service | Select-Object -First 20 | Sort-Object Status |
Tenemos que tener cuidado con las canalizaciones ya que aquí el orden si que afecta al resultado
1 |
Get-Service | Sort-Object Status | Select-Object -First 20 |
Group-Object
Nos permite organizar y agrupar los objetos basándonos en una propiedad
El resultado es un nuevo tipo de objeto de tipo Microsoft.PowerShell.Commands.GroupInfo
Veamos un ejemplo:
1 |
Get-Service s* |
Comprobamos que los objetos del resultado son de tipo System.ServiceProcess.ServiceController
1 |
Get-Service s* | Get-Member |
Ahora vamos a agrupar el resultado por el estado
1 |
Get-Service s* | Group-Object Status |
Y comprobamos que el resultado es un tipo de objeto distinto
1 |
Get-Service s* | Group-Object Status | Get-Member |
También podemos obtener un objeto de tipo HashTable
1 |
Get-Service s* | Group-Object Status -AsHashTable |
Temas
- Introducción
- Instalación y requerimientos
- Ayuda
- Ampliando la funcionalidad
- Canalización
- Operadores
- Comandos básicos
- Formato de salida
- Importar y Exportar datos
- Arrays y HashTables
- Ejecución de Scripts
- Providers
- Trabajos
- Scripts y funciones
- Gestión de Errores
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Un comentario
Pingback: Curso básico de Powershell: Importar y Exportar datos | El Blog de Negu