$to="\\SERVER\Share\Folder"
if(!(test-path $to))
{
...
}
如果服务器处于脱机状态(已解析的名称但没有ping),则来自测试路径的调用永远不会返回(在我对脚本时间的狭隘理解中)。失败只需要很长时间。最后,在用黄油烤面包后找不到预期的结果,找不到咖啡,跑出去买一些,等待水再次煮沸,找到我的面包冷。回到屏幕看到它就出现了......
与经典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不在游戏中。
Update2:我想知道,有没有人经历过同样浪费的时间?试用64位W2k8R2服务器并没有问题。呼叫最多返回30秒。我的问题出在32位Windows XP PC上。
谢谢,Rob
答案 0 :(得分:5)
我无法模拟这种情况,但我有一个建议。尝试先ping服务器,然后尝试建立连接。
$(Test-Connection -ComputerName SERVER -ErrorAction SilentlyContinue -Count 1).StatusCode
如果ping成功,此命令将返回0,因此您可以在条件语句中使用它。