Hai bisogno di dividere i percorsi per ottenere parti specifiche di essi? Se sì, allora il comando PowerShell Split-Path
è l’amico su cui puoi contare. Quando lavori con file, certificati e registro, noterai che i percorsi rappresentano le loro posizioni.
E in qualche momento, potresti aver bisogno di filtrare quale parte di un percorso restituire, magari quando fai automazione. Fortunatamente per te, questo tutorial ti insegnerà modi per utilizzare il comando PowerShell Split-Path
per farlo.
Dai, continua a leggere e vediamo di darti una nuova arma per il tuo arsenale di PowerShell!
Prerequisiti
Se hai intenzione di seguire gli esempi in questo tutorial pratico, avrai bisogno di un computer con qualsiasi versione moderna di Windows che abbia PowerShell 5.1 o superiore. Questo tutorial userà Windows 10 20H2 con PowerShell 7.1.1.
Cos’è un Percorso?
Prima di addentrarci nel comando PowerShell Split-Path
, assicuriamoci che tu abbia chiaro cos’è un percorso. Un percorso determina la posizione di un elemento che segue un formato specifico.
Ad esempio, il percorso di un file potrebbe essere C:\demo\sottocartella1\TestFile_11.txt. Se separi questo percorso in parti, il percorso include quanto segue:
- C: is the drive or the qualifier, or the specified path. The qualifier is the part of the path from the left up to the colon (
:
) character. - \demo\sottocartella1\è la cartella e la/i sottocartella/e o contenitore/i.
- TestFile_11.txtè il nome del file o la foglia. La foglia è l’ultimo elemento o parte di un percorso.
Tieni presente, però, che i percorsi non sono esclusivi per file e cartelle. Altri percorsi validi possono includere:
- Certificato (ad esempio, Cert:\CurrentUser\My)
- Registro (ad esempio, HKCU:\Software)
- Funzione (ad esempio, Function:\New-Guid)
- Variabile (ad esempio, Variable:\PSEdition)
- Active Directory (ad esempio, AD:\CN=Users,DC=Constoso,DC=com)
I parametri di Split-Path di PowerShell
Come ogni cmdlet, Split-Path
è dotato di un insieme di parametri che manipolano il comportamento del cmdlet e restituiscono il suo output. E questi parametri sono ciò che costituisce la sintassi di Split-Path
di PowerShell.
-Path
– Questo parametro accetta una o più stringhe di percorso che si desidera dividere. Questo parametro accetta anche input da pipeline. I caratteri jolly nei percorsi sono anche accettabili.-LiteralPath
– Come il parametro-Path
, il parametro-LiteralPath
accetta anche percorsi da dividere. Ma questo parametro tratterà solo il percorso così come è scritto. Significa che il comando non interpreterà i caratteri jolly se si utilizza questo parametro per specificare i percorsi.-Resolve
– Questo parametro dice al cmdletSplit-Path
di risolvere i file o gli elementi che sono referenziati dal percorso fornito. A causa della sua natura letterale, non è possibile utilizzare questo parametro insieme al parametro-LiteralPath
.-IsAbsolute
– Questo parametro restituisce un valore booleano per determinare se il percorso specificato è un percorso assoluto o meno.
Il cmdlet PowerShell
Split-Path
ha anche un parametro chiamato-Credential
, che teoricamente accetta un oggetto PSCredential. Ma secondo Microsoft, questo parametro non è supportato da nessuno dei provider PowerShell predefiniti e genera un errore quando viene utilizzato.
I seguenti parametri sono chiamati Parametri di Suddivisione della Posizione. Questi parametri indicano al cmdlet PowerShell Split-Path
quale elemento o parte di un percorso restituire. Poiché il cmdlet può restituire solo un elemento di un percorso, è possibile utilizzare solo uno di questi parametri alla volta.
-Parent
– Restituisce la posizione genitore (senza l’elemento o il nome file) del percorso specificato. Questo parametro è anche il parametro predefinito della posizione di divisione, il che significa che è possibile omettere questo parametro e ottenere comunque la posizione genitore come risultato.-Leaf
– Restituisce solo l’ultimo elemento del percorso o il leaf.-LeafBase
– Restituisce solo l’ultimo elemento del percorso o il leaf senza l’estensione. Questo parametro è disponibile solo in PowerShell 6.0 e versioni successive.-Estensione
– Restituisce solo l’estensione del file (dal punto finale “.
” all’ultimo carattere del percorso). Questo parametro è disponibile solo in PowerShell 6.0 e versioni successive.-Qualificatore
– Restituisce solo il drive o il qualificatore del percorso.-NoQualificatore
– Rimuove il drive o il qualificatore dal resto del percorso.
Utilizzando il cmdlet PowerShell Split-Path (Esempi)
Il cmdlet PowerShell Split-Path consente di dividere e dissezionare parti di un percorso. Dopo averlo fatto, è possibile specificare quale parte di un percorso restituire. A seconda delle esigenze di output, è possibile scegliere di restituire il qualificatore, il percorso senza qualificatore e il nome del file (o dei file).
Ottenere la cartella genitore di un percorso
Per restituire la cartella genitore del percorso, eseguire il cmdlet PowerShell Split-Path
e aggiungere il parametro -Parent
.
Il risultato qui sotto mostra che il comando restituisce il percorso della cartella genitore.

Suggerimento: Eseguire il cmdlet PowerShell Split-Path senza parametri restituirà la cartella genitore per impostazione predefinita, lo stesso comportamento dell’utilizzo del parametro
-Parent
.
Suggerimento: Il parametro
-Path
accetta percorsi multipli, il che consente di dividere valori di stringhe di percorsi multipli in un singolo comando.e.g.,
Split-Path -Path 'c:\folder1','c:\folder2'
Visualizzazione di un percorso senza il qualificatore
Immagina di creare uno script che duplica la struttura a albero di una cartella da un’unità all’altra (ad esempio, C:\demo\subfolder1 a D:\demo\subfolder1). Potresti voler che il tuo codice divida il percorso di origine e ottenga solo la struttura delle cartelle senza la lettera dell’unità.
Per ottenere il percorso senza il qualificatore, esegui il cmdlet PowerShell Split-Path
con il parametro -NoQualifier
come il comando qui sotto. Questo comando suddivide il percorso e omette la lettera dell’unità nel risultato.
Come puoi vedere dal risultato qui sotto, utilizzando il parametro noQualifier
si ottiene il percorso ma senza la stringa di qualificazione.

Ottenere l’unità o il qualificatore di un percorso
A volte potresti aver bisogno di restituire solo il qualificatore o la lettera dell’unità. Ad esempio, quando vuoi che il tuo script riassuma i risultati in base alle lettere dell’unità.
E per farlo, esegui il comando PowerShell Split-Path
qui sotto con il parametro -Qualifier
. Questo comando dividerà il percorso e restituirà solo la stringa di qualificazione come risultato.

Visualizzazione del nome di un file, directory o elemento
Pensa a un percorso come a un albero. Il qualificatore potrebbe essere l’albero stesso, le cartelle sono i rami, e alla fine troverai il foglio. Un foglio è qualsiasi stringa di lunghezza non zero alla fine del percorso.
Quando hai bisogno di dividere un percorso per ottenere il foglio, esegui il comando Split-Path
qui sotto e aggiungi il parametro -Leaf
.
Come risultato, l’immagine qui sotto mostra che il comando ha restituito solo il nome del file dal percorso specificato.

Dividere il Nome File dall’Estensione (≥PowerShell 6.0)
Nota: Questa sezione si applica a PowerShell 6.0 e versioni successive.
Quindi hai diviso il percorso e restituito l’elemento. E l’elemento, in questo caso, è un nome file (TestFile_11.txt), che ha due parti: la base e l’estensione. Il cmdlet Split-Path
di PowerShell ti consente di suddividere ulteriormente il leaf in queste due parti con i parametri -LeafBase
e -Extension
.
Per ottenere la base e l’estensione di un nome file, esegui i comandi seguenti.
Se il percorso non ha un’estensione, il parametro
Extension
restituirà una stringa vuota.

Dividere il Nome File dall’Estensione (≤ Windows PowerShell 5.1)
Sfortunatamente, i parametri -LeafBase
e -Extension
non sono disponibili in Windows PowerShell 5.1 e nelle versioni precedenti. Non preoccuparti, con un po’ di magia di PowerShell, puoi replicare l’output di questi parametri anche se hai solo Windows PowerShell 5.1.
Ma invece del cmdlet Split-Path
, userai la prossima cosa migliore: la combinazione del metodo split()
e dell’operatore -replace
.
A PowerShell string object, such as the path, contains a split()
method. This method allows you to split a string into multiple elements based on a delimiter character that you provide. And in the case of paths, the delimiter is the (\\
) back-slash character.
D’altra parte, l’operatore -replace
ti consente di sostituire le stringhe usando le espressioni regolari (RegEx).
Per imitare i risultati del parametro -LeafBase
, esegui il comando seguente in PowerShell.
Come risultato, la schermata sottostante mostra che il comando restituisce solo il nome di base del file.

Ora, per ottenere solo l’estensione del file, esegui il comando seguente in PowerShell.
Il risultato sottostante mostra che il comando restituisce solo l’estensione del file – txt
.

Determinare se il percorso è assoluto
Come amministratore di sistema, incontrerai due tipi di percorsi –assolutoe relativo. Ma qual è la differenza? Un percorso assoluto inizia con un qualificatore, come C:\demo o HKCU:\Software. Al contrario, un percorso relativo non ha un qualificatore, come .\demo o \folder1\folder2.
Il cmdlet Split-Path
di PowerShell può aiutarti a identificare un percorso assoluto utilizzando il parametro -IsAbsolute
. Per farlo, esegui i comandi seguenti per determinare se il percorso è assoluto.
Come puoi vedere qui sotto, il parametro -isAbsolute
restituisce un valore booleano per indicare se il percorso è assoluto (TRUE
) o relativo (FALSE
).

Divisione e Risoluzione dei Percorsi con Caratteri Jolly
Fino a questo punto, i percorsi che hai diviso con il cmdlet Split-Path
non devono essere necessariamente esistenti. Che il percorso esista o meno, questo cmdlet lo dividerà e ti darà il risultato.
Ma il cmdlet Split-Path
di PowerShell ha un altro parametro chiamato -Resolve
. Questo parametro ti consente di risolvere gli elementi che sono referenziati da caratteri jolly. E se utilizzerai questo parametro, il percorso che dividerai e gli elementi al suo interno devono già esistere.
Ad esempio, per restituire gli elementi corrispondenti all’estensione del file *.txt
, esegui il comando seguente. Il parametro -Leaf
assicura che il cmdlet restituisca solo gli elementi e non i contenitori genitori.
Il carattere jolly (
*
) rappresenta uno o più caratteri da corrispondere, mentre (?
) rappresenta un singolo carattere jolly.
Il risultato qui sotto elenca i file TestFile_11.txt fino a TestFile_20.txt. Questi file hanno tutti corrisposto all’estensione del nome file .txt
.

Per risolvere una corrispondenza di singoli caratteri, sostituisci l’asterisco (`*`) con il jolly (`?`), come nel comando seguente.
L’output qui sotto mostra solo il file TestFile_20.txt perché questo è l’unico file che corrispondeva.

Se il percorso contiene un carattere di escape, come l’accento grave (“`”), racchiudi il percorso tra virgolette singole per risolvere il percorso. Ad esempio, il comando sotto suddivide e risolve un percorso contenente un carattere di escape.

Come prova di concetto, se non racchiudi quel percorso tra virgolette singole, il comando restituirà un errore che il percorso non esiste. Lo stesso errore si verifica se si utilizzano virgolette doppie al suo posto.

Conclusione
Il cmdlet PowerShell Split-Path
è uno strumento indispensabile per gli amministratori di sistema e gli utenti. Questo tutorial mirava a insegnarti come il cmdlet Split-Path
possa suddividere qualsiasi percorso dato e restituire elementi specifici in base al parametro utilizzato.
Hai mai utilizzato Split-Path
nei tuoi compiti? In caso contrario, questo tutorial ti ha convinto ad utilizzarlo nei tuoi compiti manuali o di automazione? O conosci un altro modo per suddividere i percorsi meglio di quanto PowerShell Split-Path
possa fare?