VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。
現在の作業場所のルートディレクトリを取得するには Get-Locationコマンドレットを使用します。
書式は
(Get-Location).Drive.Root
です。
List1ではカレントディレクトリが C:\Work で実行しているので、ルートディレクトリとして C:\ を返します。
List1PS C:\Work3> (Get-Location).Drive.Root |
今度は、任意のパス文字列からルートディレクトリを取得してみたいと思います。
残念ながら、既存のコマンドレットの機能で取得する方法は思いつきませんでしたので、.NET Frameworkを使用した例を紹介します。
まず最初にSystem.IO.DirectoryをLoadします。(List1)
List2PS C:\Work> [reflection.assembly]::LoadWithPartialName("System.IO") |
つぎに、System.IO.DirectoryのGetDirectoryRootメソッドを使用して、ルートディレクトリを取得します。
書式
[System.IO.Directory]::GetDirectoryRoot(パス文字列)
です。
List3では、"C:\Work"のルートディレクトリと"F:\Work"のルートディレクトリを取得しています。
GetDirectoryRootメソッドでは、パス文字列で指定したパスは、実際に存在する必要はありません。
架空のパスでも実行することができるため、場合によっては存在するパスかどうかを確認する処理を含める必要があります。(この場合にはTest-Pathコマンドレットが有効です)
List3PS C:\Work> [System.IO.Directory]::GetDirectoryRoot("C:\Work") |