Condividi tramite


Sort-Object

Ordina gli oggetti in base ai valori delle proprietà.

Sintassi

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

Descrizione

Il cmdlet Sort-Object applica agli oggetti un ordine crescente o decrescente in base ai valori delle proprietà dell'oggetto.

È possibile specificare una o più proprietà (per un ordinamento a più chiavi) e selezionare un ordinamento con o senza distinzione tra maiuscole e minuscole. È inoltre possibile indicare a Sort-Object di visualizzare solo gli oggetti con un valore univoco per una particolare proprietà.

Parametri

-CaseSensitive

Indica che per l'ordinamento verrà fatta distinzione tra maiuscole e minuscole. Per impostazione predefinita, per l'ordinamento non viene fatta distinzione tra maiuscole e minuscole.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Culture <string>

Specifica la configurazione relativa alla lingua da utilizzare durante l'ordinamento.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Descending

Ordina gli oggetti in ordine decrescente. L'impostazione predefinita è l'ordine crescente.

Il parametro Descending si applica a tutte le proprietà. Per applicare ad alcune proprietà

l'ordine crescente e ad altre quello decrescente, è necessario specificare i relativi valori mediante una tabella hash. Per informazioni dettagliate, vedere gli esempi.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-InputObject <psobject>

Specifica gli oggetti da ordinare.

Quando si utilizza il parametro InputObject per inviare una raccolta di elementi, Sort-Object riceve un oggetto che rappresenta la raccolta. Poiché non è possibile ordinare un solo oggetto, Sort-Object restituisce invariata l'intera raccolta.

Per ordinare gli oggetti, reindirizzarli a Sort-Object.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

false

-Property <Object[]>

Specifica le proprietà da utilizzare durante l'ordinamento. Gli oggetti vengono ordinati in base ai valori di queste proprietà. Immettere i nomi delle proprietà. È consentito l'utilizzo di caratteri jolly.

Se si specificano più proprietà, gli oggetti verranno innanzitutto ordinati in base alla prima proprietà. Se più oggetti hanno lo stesso valore per la prima proprietà, vengono ordinati in base alla seconda proprietà. Il processo continuerà fino a quando non saranno più disponibili proprietà specificate o gruppi di oggetti.

Se non si specificano le proprietà, il cmdlet esegue l'ordinamento in base alle proprietà predefinite per il tipo di oggetto.

Il valore del parametro Property può essere una nuova proprietà calcolata. Per creare una proprietà calcolata, utilizzare una tabella hash. Le chiavi valide sono le seguenti:

-- Expression <stringa> o <blocco di script>

-- Ascending <booleano>

-- Descending <booleano>

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-Unique

Elimina i duplicati e restituisce solo i membri univoci della raccolta. È possibile utilizzare questo parametro anziché il cmdlet Get-Unique.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.Management.Automation.PSObject

È possibile reindirizzare gli oggetti da ordinare a Sort-Object.

Output

System.Management.Automation.PSObject

Sort-Object restituisce gli oggetti ordinati.

Note

Sort-Object ordina gli oggetti in base alle proprietà specificate o alle proprietà di ordinamento predefinite per gli oggetti di tale tipo.

Se una delle proprietà specificate non è disponibile per un oggetto, il valore della proprietà per tale oggetto verrà interpretato dal cmdlet come NULL e inserito alla fine dell'ordinamento.

Durante l'ordinamento di oggetti, Sort-Object utilizza il metodo Compare per ciascuna proprietà. Se una proprietà non implementa IComparable, il cmdlet convertirà il valore della proprietà in una stringa e utilizzerà il metodo Compare per System.String.

Il cmdlet Sort-Object applica agli oggetti un ordine crescente o decrescente in base ai valori delle proprietà dell'oggetto.

Se si ordina una proprietà il cui valore è un'enumerazione, Sort-Object applica l'ordine numerico ai valori di enumerazione, non ai nomi dei membri di enumerazione. Ad esempio, se si ordinano servizi in base allo stato, i servizi con lo stato "Stopped" vengono visualizzati prima dei servizi con lo stato "Running", perché il valore di Status è un'enumerazione ServiceControllerStatus in cui "Stopped" dispone del valore 1 e "Running" del valore 4.

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

Descrizione
-----------
Questo comando ordina i file e le sottodirectory incluse nella directory corrente. Poiché non è specificata alcuna proprietà, i file e le directory vengono disposti in ordine alfabetico crescente in base alla proprietà di ordinamento predefinita, Name.





Esempio 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

Descrizione
-----------
Tramite questo comando verranno visualizzati in file inclusi nella directory corrente in ordine crescente in base alla dimensione del file.





Esempio 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

Descrizione
-----------
Questo comando visualizza i cinque processi nel computer con il maggiore utilizzo di memoria in base alle dimensioni dei relativi working set. 

Il comando utilizza il cmdlet Get-Process per ottenere un elenco di processi. Utilizza un operatore pipeline (|) per inviare i risultati al cmdlet Sort-Object che ordina gli oggetti in base all'ordine del working set. 

Un altro operatore pipeline invia i risultati a Select-Object che visualizza solo gli ultimi cinque elementi nell'elenco.





Esempio 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

Descrizione
-----------
Tramite questo comando gli oggetti HistoryInfo verranno ordinati utilizzando la proprietà Id come chiave predefinita.





Esempio 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

Descrizione
-----------
Questo comando visualizza i servizi nel computer in ordine decrescente per Status e crescente per DisplayName.

Il comando utilizza il cmdlet Get-Service per ottenere i servizi disponibili nel computer. Utilizza un operatore pipeline (|) per inviare i servizi al cmdlet Sort-Object.

Per applicare a una proprietà l'ordine crescente e a un'altra l'ordine decrescente, il comando utilizza una tabella hash per il valore del parametro Property. La tabella hash utilizza una chiave Expression per specificare il nome della proprietà e una chiave Ascending o Descending per specificare l'ordinamento.

La visualizzazione risultante, che dispone i valori di Status in ordine decrescente, elenca le proprietà con il valore di Status "Running" prima di quelle con il valore "Stopped". Se si applica l'ordine crescente, "Stopped" viene visualizzato prima di "Running", perché Status è una proprietà enumerata in cui il valore "Stopped" (1) è minore del valore "Running" (4).





Esempio 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

Descrizione
-----------
Tramite questo comando i file di testo verranno ordinati in ordine decrescente in base all'intervallo di tempo tra CreationTime e LastWriteTime.





Esempio 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

Descrizione
-----------
Questi comandi ordinano i nomi dei server in un file di testo. Il secondo comando utilizza il cmdlet Sort-Object con il parametro Unique per restituire un elenco ordinato senza duplicati.





Vedere anche

Concetti

Group-Object