about_Path_Syntax
Krótki opis
Opisuje formaty pełnej i względnej ścieżki w programie PowerShell.
Długi opis
Wszystkie elementy w magazynie danych dostępne za pośrednictwem dostawcy programu PowerShell mogą być jednoznacznie identyfikowane przez ich nazwy ścieżek. Ścieżka jest kombinacją nazwy elementu, kontenera i podkontenerów, w których znajduje się element, oraz dysku programu PowerShell, za pomocą którego uzyskuje się dostęp do kontenerów.
W programie PowerShell nazwy ścieżek mogą być jednym z dwóch typów: w pełni kwalifikowane i względne. W pełni kwalifikowana ścieżka składa się ze wszystkich elementów tworzących ścieżkę. Poniższa składnia przedstawia elementy w w pełni kwalifikowanej ścieżki:
[<provider>::]<drive>:[\<container>[\<subcontainer>...]]\<item>
Symbol <provider>
zastępczy odwołuje się do dostawcy programu PowerShell, za pośrednictwem którego uzyskujesz dostęp do magazynu danych. Na przykład dostawca systemu plików umożliwia dostęp do plików i katalogów na komputerze. Ten element składni jest opcjonalny i nigdy nie jest potrzebny, ponieważ nazwy dysków są unikatowe dla wszystkich dostawców.
Symbol <drive>
zastępczy odwołuje się do dysku programu PowerShell obsługiwanego przez określonego dostawcę programu PowerShell. W przypadku dostawcy systemu plików dyski programu PowerShell są mapowane na dyski systemu Windows skonfigurowane w systemie.
Jeśli na przykład system zawiera A:
dysk i C:
dysk, dostawca systemu plików tworzy te same dyski w programie PowerShell.
Po określeniu dysku należy określić wszystkie kontenery i podkontenery zawierające element. Kontenery muszą być określone w kolejności hierarchicznej, w której istnieją w magazynie danych. Innymi słowy, należy rozpocząć od kontenera nadrzędnego, a następnie kontener podrzędny w tym kontenerze nadrzędnym, powtarzając wzorzec dla każdego kontenera podrzędnego. Ponadto każdy kontener musi być poprzedzony ukośnikiem odwrotnym.
Uwaga
Program PowerShell umożliwia używanie ukośnika odwrotnego lub ukośnika do przodu w celu zachowania zgodności z programem PowerShell na innych platformach. Działa to w przypadku poleceń programu PowerShell, ale może nie działać w przypadku użycia z aplikacjami natywnymi, które oczekują tylko separatora katalogu natywnego. Użyj [System.IO.Path]::DirectorySeparatorChar
polecenia , aby znaleźć znak używany dla platformy.
Po określeniu kontenera i podkontenerów należy podać nazwę elementu poprzedzoną ukośnikiem odwrotnym. Na przykład w pełni kwalifikowana nazwa Shell.dll
ścieżki pliku w C:\Windows\System32
katalogu jest następująca:
C:\Windows\System32\Shell.dll
W tym przypadku dysk, za pomocą którego uzyskuje się dostęp do kontenerów, jest C:
dysk, kontener najwyższego poziomu to Windows
, podkontainer to System32
, a element to Shell.dll
.
W niektórych sytuacjach nie trzeba określać w pełni kwalifikowanej ścieżki i zamiast tego można użyć ścieżki względnej. Program PowerShell umożliwia identyfikowanie elementu na podstawie jego lokalizacji względem bieżącej lokalizacji roboczej.
Program PowerShell używa następujących sekwencji znaków do określania ścieżek względnych.
- (
.
) — bieżąca lokalizacja - (
..
) — element nadrzędny bieżącej lokalizacji - (
\
) — katalog główny bieżącej lokalizacji
Poniższe przykłady są oparte na bieżącym katalogu roboczym ustawionym na C:\Windows
wartość .
- Ścieżka
.\System
względna jest rozpoznawana jakoC:\Windows\System
- Ścieżka
..\Program Files
względna jest rozpoznawana jakoC:\Program Files
- Ścieżka
\Program Files
względna jest rozpoznawana jakoC:\Program Files
- Ścieżka
System
względna jest rozpoznawana jakoC:\Windows\System
W przypadku używania ścieżki w poleceniu można użyć w pełni kwalifikowanej ścieżki lub względnej. Załóżmy na przykład, że bieżącym katalogem roboczym jest C:\Windows
. Następujące Get-ChildItem
polecenie pobiera wszystkie elementy w C:\TechDocs
katalogu:
Get-ChildItem \TechDocs
Ukośnik odwrotny wskazuje, że należy użyć katalogu głównego dysku bieżącej lokalizacji roboczej. Ponieważ katalog roboczy to C:\Windows
, katalog główny dysku jest dyskiem C:
. TechDocs
Ponieważ katalog znajduje się poza katalogem głównym, należy określić tylko ukośnik odwrotny.
Te same wyniki są uzyskiwane przy użyciu w pełni kwalifikowanej ścieżki:
Get-ChildItem C:\TechDocs
Niezależnie od tego, czy używasz w pełni kwalifikowanej ścieżki, czy nazwy ścieżki względnej, ścieżka jest ważna nie tylko dlatego, że lokalizuje element, ale także dlatego, że jednoznacznie identyfikuje element, nawet jeśli ten element ma taką samą nazwę jak inny element w innym kontenerze.
Załóżmy na przykład, że masz dwa pliki o nazwie Results.txt
. Pierwszy plik znajduje się w katalogu o nazwie C:\TechDocs\Jan
, a drugi plik znajduje się w katalogu o nazwie C:\TechDocs\Feb
. Ścieżka pierwszego pliku (C:\TechDocs\Jan\Results.txt
) i ścieżka drugiego pliku (C:\TechDocs\Feb\Results.txt
) umożliwia wyraźne rozróżnienie między dwoma plikami.
Obsługa przestrzeni nazw plików Win32
W systemie Windows polecenia cmdlet, które obsługują dostawcę systemu plików, obsługują również ścieżki korzystające z formatu przestrzeni nazw plików Win32. Te ścieżki można używać tylko z parametrem LiteralPath poleceń cmdlet.
Ścieżki w przestrzeni nazw plików Win32 mają prefiks \\?\
. Prefiks informuje interfejsy API systemu Windows, aby wyłączyć analizowanie wszystkich ciągów i wysłać ciąg, który następuje bezpośrednio do systemu plików. Jeśli na przykład system plików obsługuje duże ścieżki i nazwy plików, możesz przekroczyć limity MAX_PATH , które w przeciwnym razie są wymuszane przez interfejsy API systemu Windows.
Aby uzyskać więcej informacji, zobacz Przestrzenie nazw plików Win32 w nazwach plików, ścieżek i przestrzeni nazw.