2012-01-05 3 views
4

私はネットワークパスからスクリプトを呼び出しています。スクリプトは、基本的には別のプログラムだけを呼び出し、現在のディレクトリを引数として渡します。Powershellとネットワークパス

引数として$ PWDを渡すと、私のプログラムで見られるパスは "Microsoft.PowerShell.Core \ FileSystem :: \ my_server \ public"であり、標準のUNCパスが必要であるため、もちろん失敗します。

私のアドホックな解決策は単に.Replace("Microsoft.PowerShell.Core\FileSystem::", "")を実行していましたが、実際にはこの "powershell"形式から標準のUNCへのパスを変換する本当の方法は何でしょうか。

もっと良い解決策はありますか?

答えて

10

代わりに$pwd.ProviderPathを使用してください。

PS Home:\> cd \\localhost\h$ 
PS FileSystem::\\localhost\h$> $pwd|fl -force * 


Drive  : 
Provider  : FileSystem 
ProviderPath : \\localhost\h$ 
Path   : FileSystem::\\localhost\h$ 

また、-replaceオペレータがあり、あなたは必ずしもそのメソッド呼び出しは必要ありません。

+0

ありがとうございました。 Btw、これは| fl -force *トリックは将来的には非常に便利です。早速のお返事ありがとうございます。 – Klark

+1

これは、オブジェクトが持つすべてのプロパティを(デフォルトで*表示されているものだけでなく)見ることができる素早い方法です。あなたが '$ pwd'を見ると' Path'だけが表示され、他のものは表示されません。もう1つの便利なことは 'Get-Member'や' gm'ですが、値が表示されないので、(私の場合は) ':-) – Joey

関連する問題