about_Path_Syntax
簡単な説明
PowerShell の完全パス形式と相対パス形式について説明します。
詳細な説明
PowerShell プロバイダーを介してアクセスできるデータ ストア内のすべての項目は、パス名によって一意に識別できます。 パスは、項目名、項目が配置されているコンテナーとサブコンテナー、およびコンテナーにアクセスする PowerShell ドライブの組み合わせです。
PowerShell では、パス名には、 完全に修飾された と 関係の 2 種類のいずれかを指定できます。 完全修飾パスは、パスを構成するすべての要素で構成されます。 次の構文は、完全修飾パス内の要素を示しています。
[<provider>::]<drive>:[\<container>[\<subcontainer>...]]\<item>
<provider>
プレースホルダーは、データ ストアにアクセスする PowerShell プロバイダーを指します。 たとえば、FileSystem プロバイダーを使用すると、コンピューター上のファイルとディレクトリにアクセスできます。 この構文の要素は省略可能であり、ドライブ名はすべてのプロバイダーで一意であるため、必要ありません。
<drive>
プレースホルダーは、特定の PowerShell プロバイダーでサポートされている PowerShell ドライブを指します。 FileSystem プロバイダーの場合、PowerShell ドライブはシステムで構成されている Windows ドライブにマップされます。
たとえば、システムに A:
ドライブと C:
ドライブが含まれている場合、FileSystem プロバイダーは PowerShell で同じドライブを作成します。
ドライブを指定したら、その項目を含むコンテナーとサブコンテナーを指定する必要があります。 コンテナーは、データ ストアに存在する階層的な順序で指定する必要があります。 つまり、親コンテナー、その親コンテナー内の子コンテナーから始めて、各子コンテナーのパターンを繰り返す必要があります。 さらに、各コンテナーの前に円記号を付ける必要があります。
Note
PowerShell を使用すると、バックスラッシュまたはスラッシュを使用して、他のプラットフォームの PowerShell との互換性を確保できます。 これは PowerShell コマンドでは機能しますが、ネイティブ ディレクトリ区切り記号のみを想定するネイティブ アプリケーションで使用する場合は機能しない場合があります。 [System.IO.Path]::DirectorySeparatorChar
を使用して、プラットフォームで使用される文字を見つけます。
コンテナーとサブコンテナーを指定した後、項目名の前に円記号を付けて指定する必要があります。 たとえば、C:\Windows\System32
ディレクトリ内のShell.dll
ファイルの完全修飾パス名は次のとおりです。
C:\Windows\System32\Shell.dll
この場合、コンテナーにアクセスするドライブは C:
ドライブ、最上位レベルのコンテナーは Windows
、サブコンテナーは System32
、項目は Shell.dll
。
状況によっては、完全修飾パスを指定する必要がなく、代わりに相対パスを使用できます。 PowerShell を使用すると、現在の作業場所に対する相対的な位置に基づいて項目を識別できます。
PowerShell では、次の文字シーケンスを使用して相対パスを指定します。
- (
.
) - 現在の場所 - (
..
) - 現在の場所の親 - (
\
) - 現在の場所のルート
次の例は、 C:\Windows
に設定されている現在の作業ディレクトリに基づいています。
- 相対パス
.\System
は次のように解決されます。C:\Windows\System
- 相対パス
..\Program Files
は次のように解決されます。C:\Program Files
- 相対パス
\Program Files
は次のように解決されます。C:\Program Files
- 相対パス
System
は次のように解決されます。C:\Windows\System
コマンドでパスを使用する場合は、完全修飾パスまたは相対パスを使用できます。 たとえば、現在の作業ディレクトリが C:\Windows
しているとします。 次の Get-ChildItem
コマンドは、 C:\TechDocs
directory 内のすべての項目を取得します。
Get-ChildItem \TechDocs
円記号は、現在の作業場所のドライブ ルートを使用する必要があることを示します。 作業ディレクトリは C:\Windows
されているため、ドライブ ルートは C:
ドライブです。 TechDocs
ディレクトリはルートから離れているため、円記号のみを指定する必要があります。
完全修飾パスを使用すると、同じ結果が得られます。
Get-ChildItem C:\TechDocs
完全修飾パスと相対パス名のどちらを使用するかに関係なく、パスが重要なのは、アイテムが検索されるだけでなく、その項目が別のコンテナー内の別の項目と同じ名前を共有している場合でも、項目を一意に識別するためです。
たとえば、それぞれ Results.txt
という名前の 2 つのファイルがあるとします。 最初のファイルは C:\TechDocs\Jan
という名前のディレクトリにあり、2 番目のファイルは C:\TechDocs\Feb
という名前のディレクトリにあります。 最初のファイル (C:\TechDocs\Jan\Results.txt
) のパスと 2 番目のファイルのパス (C:\TechDocs\Feb\Results.txt
) を使用すると、2 つのファイルを明確に区別できます。
Win32 ファイル名前空間のサポート
Windows では、FileSystem プロバイダーをサポートするコマンドレットは、Win32 ファイル名前空間形式を使用するパスもサポートします。 これらのパスは、コマンドレットの LiteralPath パラメーターでのみ使用できます。
Win32 ファイル名前空間のパスには、プレフィックスとして \\?\
が付いています。 このプレフィックスは、すべての文字列解析を無効にし、その後の文字列をファイル システムに直接送信するように Windows API に指示します。 たとえば、ファイル システムが長いパスとファイル名をサポートする場合、Windows API によって適用される MAX_PATH 制限を超える可能性があります。
詳細については、「Nameing Files、Paths、および Namespaces のWin32 ファイルの名前空間を参照してください。
関連項目
PowerShell