Sort-Object
Ordena los objetos por los valores de las propiedades.
Sintaxis
Sort-Object [[-Property] <Object[]>] [-CaseSensitive] [-Culture <string>] [-Descending] [-InputObject <psobject>] [-Unique] [<CommonParameters>]
Descripción
El cmdlet Sort-Object organiza los objetos en orden ascendente o descendente según los valores de las propiedades del objeto.
Puede especificar una sola propiedad o varias propiedades (para ordenar según varias claves) y puede seleccionar una ordenación con o sin distinción entre mayúsculas y minúsculas. Asimismo, puede indicar a Sort-Object que muestre solo los objetos con un valor único para una propiedad concreta.
Parámetros
-CaseSensitive
Indica que al ordenar debe distinguirse entre mayúsculas y minúsculas. De manera predeterminada, no se distingue entre mayúsculas y minúsculas al ordenar.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Culture <string>
Especifica la configuración cultural que se va a usar durante la ordenación.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Descending
Ordenar los objetos de forma descendente. El valor predeterminado es el orden ascendente.
El parámetro Descending se aplica a todas las propiedades. Para ordenar por algunas propiedades en
orden ascendente y por otras en orden descendente, debe especificar sus valores de propiedad mediante una tabla hash. Para obtener más información, vea los ejemplos.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-InputObject <psobject>
Especifica los objetos que se van a ordenar.
Cuando se usa el parámetro InputObject para enviar una colección de elementos, Sort-Object recibe un objeto que representa la colección. Dado que no se puede ordenar un solo objeto, Sort-Object devuelve toda la colección sin modificarla.
Para ordenar objetos, canalícelos a Sort-Object.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
true (ByValue) |
¿Aceptar caracteres comodín? |
false |
-Property <Object[]>
Especifica las propiedades que se van a usar al ordenar. Los objetos se ordenan según los valores de estas propiedades. Escriba los nombres de las propiedades. Se permite el uso de caracteres comodín.
Si se especifican varias propiedades, los objetos se ordenan en primer lugar por la primera propiedad. Si varios objetos tienen el mismo valor para la primera propiedad, dichos objetos se ordenarán por la segunda propiedad. Este proceso continuará hasta que no haya más propiedades o grupos de objetos especificados.
Si no se especifican propiedades, el cmdlet ordenará según las propiedades predeterminadas del tipo de objeto.
El valor del parámetro Property puede ser una nueva propiedad calculada. Para crear una propiedad calculada, utilice una tabla hash. Las claves válidas son:
-- Expression <cadena> o <bloque de script>
-- Ascending <valor booleano>
-- Descending <valor booleano>
¿Requerido? |
false |
¿Posición? |
1 |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
true |
-Unique
Elimina los duplicados y devuelve solo los miembros únicos de la colección. Puede utilizar este parámetro en lugar del cmdlet Get-Unique.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
<CommonParameters>
Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.
Entradas y salidas
El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.
Entradas |
System.Management.Automation.PSObject Puede canalizar los objetos que se van a ordenar a Sort-Object. |
Salidas |
System.Management.Automation.PSObject Sort-Object devuelve los objetos ordenados. |
Notas
Sort-Object ordena los objetos según las propiedades especificadas o las propiedades de ordenación predeterminadas para los objetos de ese tipo.
Si un objeto no tiene una de las propiedades especificadas, el valor de propiedad para dicho objeto lo interpreta el cmdlet como NULL y se coloca al final de la ordenación.
Al ordenar objetos, Sort-Object utiliza el método Compare para cada propiedad. Si una propiedad no implementa IComparable, el cmdlet convertirá el valor de propiedad en una cadena y usará el método Compare para System.String.
El cmdlet Sort-Object organiza los objetos en orden ascendente o descendente según los valores de las propiedades del objeto.
Si se ordena por una propiedad cuyo valor es una enumeración, Sort-Object ordenará los valores de enumeración en orden numérico; no ordenará los nombres de los miembros de la enumeración. Por ejemplo, si ordena los servicios por estado, los servicios con el estado "Stopped" aparecen antes de los servicios con el estado "Running" porque el valor de Status es una enumeración ServiceControllerStatus, donde "Stopped" tiene el valor 1 y "Running" tiene el valor 4.
Ejemplo 1
C:\PS>get-childitem | sort-object
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 9/13/2005 4:24 PM 0 0
-a--- 9/6/2005 4:19 PM 12 a.csv
-a--- 9/21/2005 3:49 PM 529 a.Ps
-a--- 8/22/2005 4:14 PM 22 a.pl
-a--- 9/27/2005 10:33 AM 24 a.txt
-a--- 9/15/2005 10:31 AM 398 a.vbs
-a--- 7/21/2005 12:39 PM 37066 a.xml
-a--- 8/28/2005 11:30 PM 5412 a.xslt
-a--- 10/25/2005 1:59 PM 125 AdamTravel.txt
-a--- 7/21/2005 9:49 AM 59 add2Num.Ps
-a--- 8/29/2005 5:42 PM 7111 add-content.xml
-a--- 9/21/2005 12:46 PM 8771 aliens.Ps
-a--- 8/10/2005 2:10 PM 798 array.xml
-a--- 8/4/2004 5:00 AM 110 AUTORUN.INF
-a--- 9/6/2005 4:20 PM 245 b.csv
...
Descripción
-----------
Este comando ordena los subdirectorios y los archivos del directorio actual. Dado que no se especifica ninguna propiedad, los archivos y directorios se organizan en orden alfabético ascendente por su propiedad de ordenación predeterminada, Name.
Ejemplo 2
C:\PS>get-childitem | sort-object -property length
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/3/2006 5:35 PM 2 pref.txt
-a--- 9/6/2006 3:33 PM 15 count.txt
-a--- 7/26/2006 10:01 AM 30 filenoext
-a--- 8/18/2006 9:02 AM 52 temp.ps1
-a--- 8/18/2006 9:02 AM 52 temp.msh
-a--- 9/6/2006 3:33 PM 56 fivewords.txt
-a--- 7/26/2006 9:28 AM 80 date.csv
-a--- 7/29/2006 7:15 PM 84 test2.txt
-a--- 7/29/2006 7:15 PM 84 test.ps1
Descripción
-----------
Este comando muestra el número de archivos del directorio actual en orden ascendente en función de la longitud del archivo.
Ejemplo 3
C:\PS>get-process | sort-object -property WS | select-object -last 5
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
1105 25 44236 18932 197 93.81 2032 iexplore
2526 66 37668 36836 221 393.27 868 svchost
974 19 22844 45928 371 88.39 3952 WINWORD
1371 22 42192 61872 323 75.75 1584 INFOPATH
2145 58 93088 70680 619 396.69 3908 OUTLOOK
Descripción
-----------
Este comando muestra los cinco procesos del equipo con el mayor uso de la memoria según el tamaño de sus espacios de trabajo.
El comando utiliza el cmdlet Get-Process para obtener una lista de procesos. Utiliza un operador de canalización (|) para enviar los resultados al cmdlet Sort-Object, que ordena los objetos según los espacios de trabajo.
Otro operador de canalización envía los resultados al cmdlet Select-Object, que muestra solo los últimos cinco elementos de la lista.
Ejemplo 4
C:\PS>get-history | sort-object -descending
Id CommandLine
-- -----------
51 get-history | sort -descending
50 get-history | sort -descending
49 get-history | sort -descending
48 get-history | sort -descending
47 get-history | sort -descending
46 get-history | sort -descending
45 get-history | sort -descending
44 cd $pshome
43 get-childitem | sort-object
42 gci *.txt
Descripción
-----------
Este comando ordena los objetos HistoryInfo con la propiedad Id como clave predeterminada.
Ejemplo 5
C:\PS>C:\PS> get-service | sort-object -property `
@{Expression="Status";Descending=$true}, `
@{Expression="DisplayName";Descending=$false}
Status Name DisplayName
------ ---- -----------
Running ALG Application Layer Gateway Service
Running Ati HotKey Poller Ati HotKey Poller
Running wuauserv Automatic Updates
Running BITS Background Intelligent Transfer Ser...
Running Client for NFS Client for NFS
...
Stopped clr_optimizatio... .NET Runtime Optimization Service v...
Stopped Alerter Alerter
Stopped AppMgmt Application Management
Stopped aspnet_state ASP.NET State Service
Stopped ATI Smart ATI Smart
Stopped ClipSrv ClipBook
Descripción
-----------
Este comando muestra los servicios del equipo en orden descendente de Status y orden ascendente de DisplayName.
El comando utiliza el cmdlet Get-Service para obtener los servicios en el equipo. Utiliza un operador de canalización (|) para enviar los servicios al cmdlet Sort-Object.
Para ordenar una propiedad en orden ascendente y otra propiedad en orden descendente, el comando utiliza una tabla hash para el valor del parámetro Property. La tabla hash utiliza una clave Expression para especificar el nombre de propiedad y una clave Ascending o Descending para especificar el criterio de ordenación.
De forma predeterminada, se ordenan los valores de Status de forma ascendente y se muestran las propiedades con el valor "Running" para Status antes de las propiedades con el valor "Stopped" para Status. Cuando se ordena de forma ascendente, "Stopped" aparece antes de "Running" porque Status es una propiedad enumerada en la que el valor de "Stopped" (1) es menor que el valor de "Running" (4).
Ejemplo 6
C:\PS>get-childitem *.txt | sort-object -property @{Expression={$_.LastWriteTime - $_.CreationTime}; Ascending=$false} | Format-Table LastWriteTime, CreationTime
LastWriteTime CreationTime
------------- ------------
2/21/2006 10:22:20 AM 10/3/2005 4:19:40 PM
2/27/2006 8:14:24 AM 2/23/2006 10:41:08 PM
2/24/2006 1:26:19 PM 2/23/2006 11:23:36 PM
1/5/2006 12:01:35 PM 1/5/2006 11:35:30 AM
2/24/2006 9:25:40 AM 2/24/2006 9:22:24 AM
2/24/2006 9:40:01 AM 2/24/2006 9:39:41 AM
2/21/2006 10:21:30 AM 2/21/2006 10:21:30 AM
Descripción
-----------
Este comando ordena los archivos de texto en orden descendente en función del período de tiempo transcurrido entre CreationTime y LastWriteTime.
Ejemplo 7
C:\PS>get-content servers.txt
localhost
test01
server01
server02
localhost
server01
C:\PS> get-content servers.txt | sort-object -unique
localhost
server01
server02
test01
Descripción
-----------
Estos comandos ordenan los nombres de servidores en un archivo de texto. El segundo comando usa el cmdlet Sort-Object con el parámetro Unique para devolver una lista ordenada sin duplicados.