PowerShellのカレントディレクトリ

PowerShellのカレントディレクトリは、 Get-Location コマンドレットで取得できます。

ただし、 これは見た目上のカレントディレクトリのようで、.NET Framework としてのカレントディレクトリ(本当のカレントディレクトリ)は、 [IO.Directory]::SetCurrentDirectory() を用いて、別途、設定しないとダメみたいです。

if( (Get-Location).Provider.Name -eq 'FileSystem' ){
  [IO.Directory]::SetCurrentDirectory((Get-Location).ProviderPath)
}

追記 :
[IO.Directory]::GetCurrentDirectory()
[IO.Directory]::SetCurrentDirectory()
の代わりに、
[environment]::CurrentDirectory
プロパティを用いても、取得と設定ができるみたいですね。


スクリプトなどでは、ファイルアクセス関連の .NET クラスライブラリを使う前に、こういう感じの文を挿入すべし、ですね(この書き方で、ローカルディレクトリと、Windows/SAMBAネットワークディレクトリに対応)。
ちなみに、else 文を書けば、ファイルシステム以外のドライブ・プロバイダにいる時に例外を飛ばすとかできます。

この仕様、えらく不親切ではあるものの、これはおそらく、PowerShell が、現在のロケーションとして、ファイルシステム以外にも、色々とサポートしていることに起因しているんじゃないかなー、と推測。
でもまあ、不親切ですよね?
[PR]

インターネット広告の「トランスメディア」提供スキンアイコン by mikamikanamiyuki | 2008-08-10 07:02 | プログラミング

<< PowerShellの、パス指... PowerShellのループカウント >>