4
$to="\\SERVER\Share\Folder"
if(!(test-path $to))
{
    ...
}   

如果服务器离线(解析名称但没有 ping),来自测试路径的调用永远不会返回(在我对脚本时间的狭隘理解中)。失败的时间太长了。最后我得到了期待已久的结果 False 在用黄油烤面包后,发现没有咖啡,跑出去买一些,等待水再次沸腾,发现我的烤面包很冷。回到屏幕上,看到它就在那里出现......

与经典 DOS 目录相同的路径在一些实际时间后按预期失败:

dir "\\SERVER\Share\Folder"

说“找不到网络路径”。不到3分钟!

PS 的这种行为真的破坏了我的脚本。

准确地说

$t0 = get-date; test-path "\\SERVER\Share\Folder"; $t1 = get-date; ($t1-$t0).TotalSeconds

给我

False
595.2214875

提示:用解析本地网络离线 PC 名称替换 SERVER

啊问题是:1)你如何处理这个?2)那里的麻烦到底是什么?

更新:使用离线 IP 地址时的时间是相同的。DNS 已退出游戏。

更新2:我想知道,有没有人经历过同样的浪费时间?在 64 位 W2k8R2 服务器上试过,没有问题。呼叫最多在 30 秒内返回。我的问题是在 32 位 Windows XP PC 上。

谢谢,罗伯

4

1 回答 1

5

我无法模拟这种情况,但我有一个建议。首先尝试 ping 服务器,然后尝试建立连接。

 $(Test-Connection -ComputerName SERVER -ErrorAction SilentlyContinue -Count 1).StatusCode

如果 ping 成功,此命令将返回 0,因此您可以在条件语句中使用它。

于 2013-02-18T15:47:18.797 回答