web-dev-qa-db-ja.com

PowerShellで文字列をディレクトリオブジェクトに変換する

(Get-Contentとforeachループを使用して)ファイルから文字列を1行ずつ読み取り、それらの文字列をディレクトリオブジェクトに変換したいと思います(.FullNameなどのプロパティにアクセスできるようにするため)。文字列からディレクトリに簡単に変換するにはどうすればよいですか?

ファイルを使用すると簡単です:$myFileAsFile = $myFileAsStr | dir $_しかし、$directoryAsStringの目標を取得するにはどうすればよいですか?

8
D.R.

さて、答えはGet-Itemのようです:

$dirAsStr = '.\Documents'
$dirAsDir = Get-Item $dirAsStr
echo $dirAsDir.FullName

動作します!

10
D.R.

.NetクラスSystem.IO.FileInfoまたはSystem.IO.DirectoryInfoを使用できます。これは、ディレクトリが存在しない場合でも機能します。

$c = [System.IO.DirectoryInfo]"C:\notexistentdir"
$c.FullName

それはファイルでも機能します:

$c = [System.IO.DirectoryInfo]"C:\some\file.txt"
$c.Extension

したがって、それが本当にディレクトリであるかどうかを確認するには、次を使用します。

$c.Attributes.HasFlag([System.IO.FileAttributes]::Directory)

以下のコメントにSystem.IO.FileInfoの例があります。

14

Get-itemは、入力に応じてfileinfoまたはdirectoryinfoオブジェクトを出力します。または、get-item -path { $_ }にパイプします。

$myFileAsFile = get-item $myFileAsStr
$directoryAsDir = get-item $directoryAsString
0
js2010