about_Path_Syntax
Korte beschrijving
Hierin worden de volledige en relatieve padindelingen in PowerShell beschreven.
Lange beschrijving
Alle items in een gegevensarchief die toegankelijk zijn via een PowerShell-provider, kunnen uniek worden geïdentificeerd door hun padnamen. Een pad is een combinatie van de itemnaam, de container en subcontainers waarin het item zich bevindt en het PowerShell-station waarmee de containers worden geopend.
In PowerShell kunnen padnamen een van de volgende twee typen zijn: volledig gekwalificeerde en relatieve namen. Een volledig gekwalificeerd pad bestaat uit alle elementen waaruit een pad bestaat. De volgende syntaxis toont de elementen in een volledig gekwalificeerd pad:
[<provider>::]<drive>:[\<container>[\<subcontainer>...]]\<item>
De <provider>
tijdelijke aanduiding verwijst naar de PowerShell-provider waarmee u toegang hebt tot het gegevensarchief. Met de bestandssysteemprovider kunt u bijvoorbeeld toegang krijgen tot de bestanden en mappen op uw computer. Dit element van de syntaxis is optioneel en is nooit nodig omdat de stationsnamen uniek zijn voor alle providers.
De <drive>
tijdelijke aanduiding verwijst naar het PowerShell-station dat wordt ondersteund door een bepaalde PowerShell-provider. In het geval van de Bestandssysteemprovider worden de PowerShell-stations toegewezen aan de Windows-stations die op uw systeem zijn geconfigureerd.
Als uw systeem bijvoorbeeld een A:
station en een C:
station bevat, maakt de bestandssysteemprovider dezelfde stations in PowerShell.
Nadat u het station hebt opgegeven, moet u containers en subcontainers opgeven die het item bevatten. De containers moeten worden opgegeven in de hiërarchische volgorde waarin ze aanwezig zijn in het gegevensarchief. Met andere woorden, u moet beginnen met de bovenliggende container en vervolgens de onderliggende container in die bovenliggende container, waarbij het patroon voor elke onderliggende container wordt herhaald. Bovendien moet elke container worden voorafgegaan door een backslash.
Notitie
Met PowerShell kunt u backslash of slash gebruiken voor compatibiliteit met PowerShell op andere platforms. Dit werkt voor PowerShell-opdrachten, maar werkt mogelijk niet bij gebruik met systeemeigen toepassingen die alleen het systeemeigen mapscheidingsteken verwachten. Gebruik [System.IO.Path]::DirectorySeparatorChar
dit om het teken te vinden dat wordt gebruikt voor uw platform.
Nadat de container en subcontainers zijn opgegeven, moet u de itemnaam opgeven, voorafgegaan door een backslash. De volledig gekwalificeerde padnaam voor het Shell.dll
bestand in de C:\Windows\System32
map is bijvoorbeeld als volgt:
C:\Windows\System32\Shell.dll
In dit geval is het station waarmee de containers worden geopend het C:
station, de container op het hoogste niveau is Windows
, de subcontainer is System32
en het item is Shell.dll
.
In sommige situaties hoeft u geen volledig gekwalificeerd pad op te geven en kunt u in plaats daarvan een relatief pad gebruiken. Met PowerShell kunt u een item identificeren op basis van de locatie ten opzichte van de huidige werklocatie.
PowerShell gebruikt de volgende tekenreeksen om relatieve paden op te geven.
- (
.
) - Huidige locatie - (
..
) - Bovenliggende van huidige locatie - (
\
) - Hoofdmap van huidige locatie
De volgende voorbeelden zijn gebaseerd op de huidige werkmap waarop wordt ingesteld C:\Windows
.
- Het relatieve pad
.\System
wordt omgezet alsC:\Windows\System
- Het relatieve pad
..\Program Files
wordt omgezet alsC:\Program Files
- Het relatieve pad
\Program Files
wordt omgezet alsC:\Program Files
- Het relatieve pad
System
wordt omgezet alsC:\Windows\System
Wanneer u een pad in een opdracht gebruikt, kunt u een volledig gekwalificeerd pad of een relatief pad gebruiken. Stel dat uw huidige werkmap bijvoorbeeld is C:\Windows
. Met de volgende Get-ChildItem
opdracht worden alle items in de C:\TechDocs
map opgehaald:
Get-ChildItem \TechDocs
De backslash geeft aan dat de stationshoofdmap van de huidige werklocatie moet worden gebruikt. Omdat de werkmap zich bevindt, is C:\Windows
de hoofdmap van het station het C:
station. Omdat de TechDocs
map zich buiten de hoofdmap bevindt, moet u alleen de backslash opgeven.
U krijgt dezelfde resultaten met behulp van het volledig gekwalificeerde pad:
Get-ChildItem C:\TechDocs
Ongeacht of u een volledig gekwalificeerd pad of een relatieve padnaam gebruikt, is een pad niet alleen belangrijk omdat het een item zoekt, maar ook omdat het item uniek identificeert, zelfs als dat item dezelfde naam als een ander item in een andere container deelt.
Stel dat u twee bestanden hebt met elke naam Results.txt
. Het eerste bestand bevindt zich in een map met de naam C:\TechDocs\Jan
en het tweede bestand bevindt zich in een map met de naam C:\TechDocs\Feb
. Met het pad voor het eerste bestand (C:\TechDocs\Jan\Results.txt
) en het pad voor het tweede bestand (C:\TechDocs\Feb\Results.txt
) kunt u duidelijk onderscheid maken tussen de twee bestanden.
Ondersteuning voor de Win32-bestandsnaamruimte
In Windows ondersteunen de cmdlets die de FileSystem-provider ondersteunen ook de paden die gebruikmaken van de Indeling Win32-bestandsnaamruimte. U kunt deze paden alleen gebruiken met de parameter LiteralPath van de cmdlets.
Paden in win32-bestandsnaamruimte worden voorafgegaan door \\?\
. Het voorvoegsel vertelt de Windows-API's dat alle tekenreeksparsering moet worden uitgeschakeld en dat de tekenreeks die volgt rechtstreeks naar het bestandssysteem moet worden verzonden. Als het bestandssysteem bijvoorbeeld grote paden en bestandsnamen ondersteunt, kunt u de MAX_PATH limieten overschrijden die anders worden afgedwongen door de Windows-API's.
Zie Win32-bestandsnaamruimten in naamgevingsbestanden, paden en naamruimten voor meer informatie.