运维开发网

网络 – 在UNC上的PowerShell操作挂起太久了

运维开发网 https://www.qedev.com 2020-06-21 18:10 出处:网络 作者:运维开发网整理
$to="\\SERVER\Share\Folder" if(!(test-path $to)) { ... } 如果服务器处于脱机状态(已解析的名称但没有ping),则测试路径中的调用永远不会返回(在我对脚本时间的狭隘理解中).失败只需要很长时间.最后,在用黄油烤面包后找不到预期的结果,找不到咖啡,跑出去买一些,等待水再次煮沸,找到我的面包冷.回到屏幕看到它就在那里…… 与经典DOS目录
$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上.

谢谢,罗布

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

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消