Sort-Object

Classifica os objetos pelos valores de propriedade.

Sintaxe

Sort-Object [[-Property] <Object[]>] [-CaseSensitive] [-Culture <string>] [-Descending] [-InputObject <psobject>] [-Unique] [<CommonParameters>]

Descrição

O cmdlet Sort-Object classifica objetos em ordem crescente e decrescente com base nos valores de propriedades do objeto.

É possível especificar uma única propriedade ou várias propriedades (para uma classificação de várias chaves) e selecionar uma classificação com ou sem diferenciação de maiúsculas e minúsculas. Também é possível direcionar o Sort-Object para exibir apenas os objetos com um valor exclusivo para uma propriedade específica.

Parâmetros

-CaseSensitive

Indica se a classificação deve diferenciar maiúsculas de minúsculas. Por padrão, a classificação não faz diferenciação de maiúsculas e minúsculas.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Culture <string>

Especifica uma configuração cultural a ser usada na classificação.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Descending

Classifica os objetos na ordem descendente. O padrão é a ordem crescente.

O parâmetro Descending se aplica a todas as propriedades. Para classificar por algumas propriedades na

ordem crescente e outras na ordem decrescente, você deve especificar os valores das propriedades usando uma tabela de hash. Para obter detalhes, consulte os exemplos.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-InputObject <psobject>

Especifica os objetos a serem classificados.

Ao usar o parâmetro InputObject para enviar uma coleção de itens, o Sort-Object recebe um objeto que representa a coleção. Como um objeto não pode ser classificado, Sort-Object retorna a coleção inteira inalterada.

Para classificar objetos, canalize-os para o Sort-Object.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

true (ByValue)

Aceitar caracteres curinga?

false

-Property <Object[]>

Especifica as propriedades a serem usadas na classificação. Os objetos são classificados com base nos valores dessas propriedades. Insira os nomes das propriedades. Os caracteres curinga são permitidos.

Se várias propriedades forem especificadas, os objetos serão classificados primeiro pela primeira propriedade. Se mais de um objeto tiver o mesmo valor para a primeira propriedade, esses objetos serão classificados pela segunda propriedade. Esse processo continuará até que não haja mais propriedades especificadas ou grupos de objetos.

Se você não especificar propriedades, o cmdlet classificará com base nas propriedades padrão do tipo de objeto.

O valor do parâmetro Property pode ser uma nova propriedade calculada. Para criar uma propriedade calculada, use uma tabela de hash. As chaves válidas são:

-- Expression <cadeia de caracteres> ou <bloco de script>

-- Ascending <Booleano>

-- Descending <Booleano>

Necessário?

false

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

-Unique

Elimina duplicatas e retorna apenas os membros exclusivos da coleção. É possível usar esse parâmetro em vez de usar o cmdlet Get-Unique.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

System.Management.Automation.PSObject

Você pode canalizar os objetos a serem classificados para Sort-Object.

Saídas

System.Management.Automation.PSObject

Sort-Object retorna os objetos classificados.

Observações

Sort-Object classifica objetos com base nas propriedades que você especifica ou nas propriedades de classificação padrão de objetos daquele tipo.

Se um objeto não tiver uma das propriedades especificadas, o valor da propriedade desse objeto será interpretado pelo cmdlet como NULL e será colocado no final da ordem de classificação.

Ao classificar objetos, Sort-Object usa o método Compare para cada propriedade. Se uma propriedade não implementar IComparable, o cmdlet converterá o valor da propriedade em uma cadeia de caracteres e usará o método Compare de System.String.

O cmdlet Sort-Object classifica objetos em ordem crescente e decrescente com base nos valores de propriedades do objeto.

Se você classificar por uma propriedade cujo valor é uma enumeração, Sort-Object classificará os valores de enumeração em ordem numérica. Ele não classificará os nomes dos membros da enumeração. Por exemplo, se você classificar serviços por status, os serviços com um status de "Stopped" aparecerão antes dos serviços com um status de "Running", porque o valor de Status é uma enumeração de ServiceControllerStatus na qual "Stopped" tem um valor de 1 e "Running" tem um valor de 4.

Exemplo 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
...

Descrição
-----------
Esse comando classifica os subdiretórios e arquivos do diretório atual. Como nenhuma propriedade está especificada, os arquivos e diretórios são classificados na ordem alfabética crescente pela propriedade de classificação padrão, Name.





Exemplo 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

Descrição
-----------
Este comando exibe o número de arquivos no diretório atual em ordem ascendente pelo comprimento do arquivo.





Exemplo 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

Descrição
-----------
Esse comando exibe os cinco processos no computador com o maior uso de memória baseado no tamanho dos conjuntos de trabalho correspondentes. 

O primeiro comando usa o cmdlet Get-Process para obter uma lista de processos. Ele usa um operador de pipeline (|) para enviar os resultados ao cmdlet Sort-Object que classifica os objetos em ordem de conjunto de trabalho. 

Outro operador de pipeline envia os resultados a Select-Object, que exibe apenas os últimos cinco itens da lista.





Exemplo 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

Descrição
-----------
Este comando classifica os objetos HistoryInfo usando a propriedade Id como a chave padrão.





Exemplo 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

Descrição
-----------
Esse comando exibe os serviços no computador em ordem decrescente de Status e ordem crescente de DisplayName.

O comando usa o cmdlet Get-Service para obter os serviços no computador. Ele usa um operador de pipeline (|) para enviar serviços ao cmdlet Sort-Object.

Para classificar uma propriedade em ordem crescente e outra propriedade em ordem decrescente, o comando usa uma tabela de hash para obter o valor do parâmetro Property. A tabela de hash usa uma chave Expression para especificar o nome da propriedade e uma chave Ascending ou Descending para especificar a ordem de classificação.

A exibição resultante, que classifica os valores de Status em ordem decrescente, lista as propriedades com um valor de Status "Running" antes das propriedades com um valor de Status de "Stopped". Quando classificado em ordem crescente, "Stopped" aparece antes de "Running", porque Status é uma propriedade enumerada na qual o valor de "Stopped" (1) é menor do que o valor de "Running" (4).





Exemplo 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

Descrição
-----------
Este comando classifica arquivos de texto na ordem descendente pelo intervalo de tempo entre CreationTime e LastWriteTime.





Exemplo 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

Descrição
-----------
Esses comandos classificam os nomes de servidores em um arquivo de texto. O segundo comando usa o cmdlet Sort-Object com o parâmetro Unique para retornar uma lista classificada sem duplicatas.





Consulte também

Conceitos

Group-Object