Get-Unique
Restituisce elementi univoci da un elenco ordinato.
Sintassi
AsString (impostazione predefinita).
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
UniqueByType
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<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.
Per impostazione predefinita, 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.
Esempio 5: Usare confronti con distinzione tra maiuscole e minuscole per ottenere stringhe univoche
In questo esempio vengono usati confronti senza distinzione tra maiuscole e minuscole per ottenere stringhe univoche da una matrice di stringhe.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique
aa
Aa
bb
Bb
Esempio 6: Usare confronti senza distinzione tra maiuscole e minuscole per ottenere stringhe univoche
In questo esempio vengono usati confronti senza distinzione tra maiuscole e minuscole per ottenere stringhe univoche da una matrice di stringhe.
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitive
aa
Bb
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.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
AsString
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-CaseInsensitive
Per impostazione predefinita, Get-Unique fa distinzione tra maiuscole e minuscole. Quando si usa questo parametro, il cmdlet usa confronti senza distinzione tra maiuscole e minuscole.
Questo parametro è stato aggiunto in PowerShell 7.4.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | 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.
Proprietà dei parametri
| Tipo: | PSObject |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-OnType
Indica che questo cmdlet restituisce un solo oggetto di ogni tipo.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
UniqueByType
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
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
PowerShell include gli alias seguenti per Get-Unique:
- Tutte le piattaforme:
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.