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.