2014-03-14 101 views
6

用戶具有適當的權限來讀取共享,並且共享映射正確。 這個問題似乎只發生在PowerShell中V2.0當測試網絡共享時,Powershell測試路徑返回False

如果我刪除所有映射驅動器,重新映射一個驅動器,並運行測試的路徑:

net use /delete * /y 
net use G: \\somefileserver\share 
Test-Path G:\ 

測試的路徑返回False,即使驅動器被清晰地映射,並且我可以通過Windows資源管理器訪問它。如果關閉powershell會話並打開一個新會話,Test-Path將返回True,因爲它應該如此。 (A)上的任何想法:什麼可能導致這種情況,以及如何使其正常工作,或(B):另一種測試除測試路徑之外是否存在網絡驅動器的方法。我試圖編寫一個登錄腳本來映射用戶的網絡驅動器,這種行爲令我瘋狂。

+0

只是爲了記錄:這在PS v3.0中正常工作。儘管在任何版本中,以管理員身份啓動PS都會起作用。映射爲標準用戶的驅動器在擡高的PS中將不可見。 –

回答

7

如果Test-Path cmdlet真的是越野車,那麼我建議在System.IO.Directory .NET類上使用Exists()方法。

[System.IO.Directory]::Exists('G:\'); # This returns $true for me 
+0

當我嘗試以上這些時,我會放鬆哪裏? 試過了,它沒有與UNC路徑一起工作,但它的工作本地修補程序但我認爲這是我不完全理解Q和A ...? –

4

要驗證UNC:

[bool]([System.Uri]$path).IsUnc 
0

對我來說,解決它是使用完整的UNC,而不是共享名稱

所以不是\\server\share我用\\server\c$\sharedir

的唯一途徑

我遇到的另一個問題是,當使用Import-Module sqlps我不得不確保CD回到文件sys然後PS命令正常工作。

3

一直在尋找這個答案,我的自我一段時間了。我認爲我找到了這個:

Test-Path $('filesystem::\\Server\share$\install.wim') 

希望其他人可以使用這個:-)

+0

謝謝丹尼爾。正是我在找什麼。 – Coding101

+0

隨時@ Coding101。很高興它對其他人有用。 –

0

感謝您提出這個問題。即使是幾年前。但我認爲這可能會幫助其他人有同樣的問題。

所以我有完全相同的問題試圖像這樣2條網絡路徑:

$verif_X = Test-Path "X:\" 
$verif_S = Test-Path "S:\" 
if($verif_X -and $verif_S){ 
    Write-Host "X: and S: network paths found" 
} else{ 
    Write-Host "Not all netowrk paths found" 
} 

..起初,我總是得到>「不是所有的元網絡路徑中找到」 這似乎真的很奇怪,我.. 比我試圖把簡單引號(')的路徑和搜索裏面那些既像這樣的網絡路徑的現有文件夾:

$verif_X = Test-Path 'X:\ISOs' 
$verif_S = Test-Path 'S:\Scripts' 

然後

if($verif_X -and $verif_S){[..]} 

條件被接受..

我想測試路徑cmdlet是有點馬車,因爲我們只輸入一個網絡路徑的第一個字母。但是這樣我不明白的錯誤了..