HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


PowerShellの開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > PowerShell Tips > ディレクトリ操作 Tips メニュー

09.ルートディレクトリを取得する

 
UPDATE:2008/02/12    
 



現在の作業場所のルートディレクトリを取得するには Get-Locationコマンドレットを使用します。

書式は
(Get-Location).Drive.Root
です。

List1ではカレントディレクトリが C:\Work で実行しているので、ルートディレクトリとして C:\ を返します。

List1

PS C:\Work3> (Get-Location).Drive.Root
C:\

今度は、任意のパス文字列からルートディレクトリを取得してみたいと思います。

残念ながら、既存のコマンドレットの機能で取得する方法は思いつきませんでしたので、.NET Frameworkを使用した例を紹介します。

まず最初にSystem.IO.DirectoryをLoadします。(List1)

List2

PS C:\Work> [reflection.assembly]::LoadWithPartialName("System.IO")

つぎに、System.IO.DirectoryのGetDirectoryRootメソッドを使用して、ルートディレクトリを取得します。

書式
[System.IO.Directory]::GetDirectoryRoot(パス文字列)
です。

List3では、"C:\Work"のルートディレクトリと"F:\Work"のルートディレクトリを取得しています。

GetDirectoryRootメソッドでは、パス文字列で指定したパスは、実際に存在する必要はありません。
架空のパスでも実行することができるため、場合によっては存在するパスかどうかを確認する処理を含める必要があります。(この場合にはTest-Pathコマンドレットが有効です)

List3

PS C:\Work> [System.IO.Directory]::GetDirectoryRoot("C:\Work")
C:\
PS C:\Work> [System.IO.Directory]::GetDirectoryRoot("F:\Work")
F:\