次の方法で共有


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、および NamespacesWin32 ファイルの名前空間を参照してください。

関連項目