2010年09月09日

[PowerShell] .NET Frameworkでパスやファイルの処理をするときの注意事項

 PowerShellで扱っているカレントディレクトリと、.NET Frameworkのカレントディレクトリは一般に異なります。
人気ブログランキング
PS U:\Work> [IO.Directory]::GetCurrentDirectory()
C:\Users\Hojo
PS U:\Work>

 そのため、PowerShellを通して.NET Frameworkの入出力処理をしようとするとパスを誤認してしまいます。下記の例では、PowerShellのカレントディレクトリがU:\Workであるのに、 .NETではC:\Users\Hojoを探してしまっています。

PS U:\Work> [IO.File]::OpenRead('.\TestFile.txt')
"1" 個の引数を指定して "OpenRead" を呼び出し中に例外が発生しました: "ファイル 'C:\Users\Hojo\TestFile.txt' が見つかりませんでした。"
発生場所 行:1 文字:20
+ [IO.File]::OpenRead <<<< ('.\TestFile.txt')
    + CategoryInfo          : NotSpecified: (:) []、MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

PS U:\Work>

 PowerShellを通して.NET Frameworkの相対パス処理を行うには、まず.NET Frameworkのカレントディレクトリを変更します。

PS U:\Work> [IO.Directory]::SetCurrentDirectory(
>> (Get-Location).Path)
>>
PS U:\Work> [IO.Directory]::GetCurrentDirectory()
U:\Work
PS U:\Work>
web拍手 by FC2
posted by 北条利彦 at 07:23 | Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。