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.






Vea también




Tabla de contenido