about_Path_Syntax
Descrizione breve
Descrive i formati di percorso completi e relativi in PowerShell.
Descrizione lunga
Tutti gli elementi in un archivio dati accessibili tramite un provider di PowerShell possono essere identificati in modo univoco dai relativi nomi di percorso. Un percorso è una combinazione del nome dell'elemento, del contenitore e dei sottocontenitori in cui si trova l'elemento e dell'unità di PowerShell in cui si accede ai contenitori.
In PowerShell i nomi dei percorsi possono essere uno dei due tipi: completi e relativi. Un percorso completo è costituito da tutti gli elementi che costituiscono un percorso. La sintassi seguente mostra gli elementi in un percorso completo:
[<provider>::]<drive>:[\<container>[\<subcontainer>...]]\<item>
Il <provider>
segnaposto fa riferimento al provider di PowerShell tramite cui si accede all'archivio dati. Ad esempio, il provider FileSystem consente di accedere ai file e alle directory nel computer. Questo elemento della sintassi è facoltativo e non è mai necessario perché i nomi delle unità sono univoci in tutti i provider.
Il <drive>
segnaposto fa riferimento all'unità di PowerShell supportata da un provider di PowerShell specifico. Nel caso del provider FileSystem, le unità di PowerShell eseguono il mapping alle unità di Windows configurate nel sistema.
Ad esempio, se il sistema include un'unità A:
e un'unità C:
, il provider FileSystem crea le stesse unità in PowerShell.
Dopo aver specificato l'unità, è necessario specificare eventuali contenitori e sottocontenitori che contengono l'elemento. I contenitori devono essere specificati nell'ordine gerarchico in cui sono presenti nell'archivio dati. In altre parole, è necessario iniziare con il contenitore padre, quindi il contenitore figlio in tale contenitore padre, ripetendo il modello per ogni contenitore figlio. Inoltre, ogni contenitore deve essere preceduto da una barra rovesciata.
Nota
PowerShell consente di usare barra rovesciata o barra rovesciata per garantire la compatibilità con PowerShell in altre piattaforme. Questa operazione funziona per i comandi di PowerShell, ma potrebbe non funzionare quando viene usata con applicazioni native che prevedono solo il separatore di directory nativo. Usare [System.IO.Path]::DirectorySeparatorChar
per trovare il carattere usato per la piattaforma.
Dopo aver specificato il contenitore e i sottocontenitori, è necessario specificare il nome dell'elemento, preceduto da una barra rovesciata. Ad esempio, il nome completo del percorso per il Shell.dll
file nella C:\Windows\System32
directory è il seguente:
C:\Windows\System32\Shell.dll
In questo caso, l'unità tramite cui si accede ai contenitori è l'unità C:
, il contenitore di primo livello è , il sottocontenitore è Windows
System32
e l'elemento è Shell.dll
.
In alcune situazioni non è necessario specificare un percorso completo e usare invece un percorso relativo. PowerShell consente di identificare un elemento in base alla relativa posizione rispetto alla posizione di lavoro corrente.
PowerShell usa le sequenze di caratteri seguenti per specificare i percorsi relativi.
- (
.
) - Posizione corrente - (
..
) - Padre della posizione corrente - (
\
) - Radice della posizione corrente
Gli esempi seguenti si basano sulla directory di lavoro corrente impostata su C:\Windows
.
- Il percorso
.\System
relativo viene risolto comeC:\Windows\System
- Il percorso
..\Program Files
relativo viene risolto comeC:\Program Files
- Il percorso
\Program Files
relativo viene risolto comeC:\Program Files
- Il percorso
System
relativo viene risolto comeC:\Windows\System
Quando si usa un percorso in un comando, è possibile usare un percorso completo o uno relativo. Si supponga, ad esempio, che la directory di lavoro corrente sia C:\Windows
. Il comando seguente Get-ChildItem
recupera tutti gli elementi nella C:\TechDocs
directory:
Get-ChildItem \TechDocs
La barra rovesciata indica che deve essere utilizzata la radice dell'unità della posizione di lavoro corrente. Poiché la directory di lavoro è C:\Windows
, la radice dell'unità è l'unità C:
. Poiché la TechDocs
directory si trova fuori dalla radice, è necessario specificare solo la barra rovesciata.
Si ottengono gli stessi risultati usando il percorso completo:
Get-ChildItem C:\TechDocs
Indipendentemente dal fatto che si usi un percorso completo o un nome di percorso relativo, un percorso è importante non solo perché individua un elemento ma anche perché identifica in modo univoco l'elemento anche se tale elemento condivide lo stesso nome di un altro elemento in un contenitore diverso.
Si supponga, ad esempio, di avere due file ognuno denominato Results.txt
. Il primo file si trova in una directory denominata C:\TechDocs\Jan
e il secondo file si trova in una directory denominata C:\TechDocs\Feb
. Il percorso del primo file (C:\TechDocs\Jan\Results.txt
) e il percorso del secondo file (C:\TechDocs\Feb\Results.txt
) consentono di distinguere chiaramente i due file.
Supporto per lo spazio dei nomi File Win32
In Windows i cmdlet che supportano il provider FileSystem supportano anche i percorsi che usano il formato dello spazio dei nomi File Win32. È possibile usare questi percorsi solo con il parametro LiteralPath dei cmdlet.
I percorsi nello spazio dei nomi File Win32 sono preceduti da \\?\
. Il prefisso indica alle API di Windows di disabilitare l'analisi di tutte le stringhe e inviare la stringa che segue direttamente al file system. Ad esempio, se il file system supporta percorsi di grandi dimensioni e nomi di file, è possibile superare i limiti di MAX_PATH che vengono altrimenti applicati dalle API di Windows.
Per altre informazioni, vedere Spazi dei nomi dei file Win32 in Denominazione di file, percorsi e spazi dei nomi.