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.