Condividi tramite


Get-Unique

Restituisce elementi univoci da un elenco ordinato.

Sintassi

Get-Unique
   [-InputObject <PSObject>]
   [-AsString]
   [<CommonParameters>]
Get-Unique
   [-InputObject <PSObject>]
   [-OnType]
   [<CommonParameters>]

Descrizione

Il cmdlet Get-Unique confronta ogni elemento di un elenco ordinato con l'elemento successivo, elimina i duplicati e restituisce una sola istanza di ogni elemento. Per il corretto funzionamento del cmdlet, è necessario ordinare l'elenco.

Get-Unique fa distinzione tra maiuscole e minuscole. Di conseguenza, le stringhe che differiscono solo per le maiuscole e minuscole di caratteri sono considerate univoche.

Esempio

Esempio 1: Ottenere parole univoce in un file di testo

Questi comandi trovano il numero di parole univoche in un file di testo.

$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
    $line.ToLower().Split(" ")
  }) | Sort-Object | Get-Unique
$A.Count

Il primo comando ottiene il contenuto del file File.txt. Converte ogni riga di testo in lettere minuscole e quindi suddivide ogni parola in una riga separata nello spazio (" "). Ordina quindi l'elenco risultante in ordine alfabetico (impostazione predefinita) e usa il cmdlet Get-Unique per eliminare qualsiasi parola duplicata. I risultati vengono archiviati nella variabile $A.

Il secondo comando usa la proprietà Count dell'insieme di stringhe in $A per determinare il numero di elementi presenti in $A.

Esempio 2: Ottenere numeri interi univoci in una matrice

Questo comando trova i membri univoci del set di numeri interi.

1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | Sort-Object | Get-Unique

1
3
4
5
12
23
4643

Il primo comando accetta una matrice di numeri interi digitati nella riga di comando, li invia tramite pipe al cmdlet Sort-Object da ordinare e quindi li invia tramite pipe a Get-Unique, che elimina le voci duplicate.

Esempio 3: Ottenere tipi di oggetto univoci in una directory

Questo comando usa il cmdlet Get-ChildItem per recuperare il contenuto della directory locale, che include file e directory.

Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType

L'operatore pipeline (|) invia i risultati al cmdlet Sort-Object. L'istruzione $_.GetType() applica il metodo GetType a ogni file o directory. Quindi, Sort-Object ordina gli elementi in base al tipo. Un altro operatore pipeline invia i risultati a Get-Unique. Il parametro OnType indirizza Get-Unique a restituire un solo oggetto di ogni tipo.

Esempio 4: Ottenere processi univoci

Questo comando ottiene i nomi dei processi in esecuzione nel computer con duplicati eliminati.

Get-Process | Sort-Object | Select-Object ProcessName | Get-Unique -AsString

Il comando Get-Process ottiene tutti i processi nel computer. L'operatore pipeline (|) passa il risultato a Sort-Object, che, per impostazione predefinita, ordina i processi in ordine alfabetico ProcessName. I risultati vengono inviati tramite pipe al cmdlet Select-Object, che seleziona solo i valori della proprietà ProcessName di ogni oggetto. I risultati vengono quindi inviati tramite pipe a Get-Unique per eliminare i duplicati.

Il parametro AsString indica Get-Unique di considerare i valori di ProcessName come stringhe. Senza questo parametro, Get-Unique considera i valori di ProcessName come oggetti e restituisce solo un'istanza dell'oggetto, ovvero il nome del primo processo nell'elenco.

Parametri

-AsString

Indica che questo cmdlet usa i dati come stringa. Senza questo parametro, i dati vengono considerati come un oggetto, quindi quando si invia una raccolta di oggetti dello stesso tipo a Get-Unique, ad esempio una raccolta di file, restituisce solo uno (il primo). È possibile usare questo parametro per trovare i valori univoci delle proprietà dell'oggetto, ad esempio i nomi di file.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-InputObject

Specifica l'input per Get-Unique. Immettere una variabile contenente gli oggetti o digitare un comando o un'espressione che ottiene gli oggetti .

Questo cmdlet considera l'input inviato usando InputObject come raccolta. non enumera singoli elementi nella raccolta. Poiché la raccolta è un singolo elemento, l'input inviato tramite InputObject viene sempre restituito invariato.

Tipo:PSObject
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-OnType

Indica che questo cmdlet restituisce un solo oggetto di ogni tipo.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

PSObject

È possibile inviare tramite pipe qualsiasi tipo di oggetto a questo cmdlet.

Output

PSObject

Questo cmdlet restituisce gli oggetti di input senza duplicati.

Note

Windows PowerShell include gli alias seguenti per Get-Unique:

  • gu

Per altre informazioni, vedere about_Aliases.

Per ordinare un elenco, usare Sort-Object. È anche possibile usare il parametro unique di Sort-Object per trovare gli elementi univoci in un elenco.