2012-01-05 195 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

謝謝,就是這樣。順便說一下,這| | fl -force *技巧將在未來非常方便。感謝您的快速回復。 – Klark 2012-01-05 12:24:45

+1

這是查看對象具有的所有屬性的快速方法(而不是僅默認*顯示的屬性)。如果你只看'$ pwd',它只會顯示'Path',而不是其他的。另一個有用的東西是'Get-Member'或者'gm',但是它沒有顯示值,所以如果我正在尋找屬性值,我希望在那裏(就像在這種情況下),我通常使用'Format-List ':-) – Joey 2012-01-05 12:27:07