net use 映射在批处理文件中不起作用但在 cmd 中起作用

net use 映射在批处理文件中不起作用但在 cmd 中起作用

好的,问题是这样的:

我让用户使用域中的登录脚本(用户名.bat)。脚本仅列出了 4 或 5 个(net use:\\SERVER\directory\)。但是,当他们打开会话时,登录脚本不起作用,并对所有会话返回系统错误 53 或 67。我尝试在配置文件加载后运行脚本,一切运行正常,但仍然出现错误。

然后我尝试在 cmd.exe 中运行相同的命令。一切都映射正确。如果我使用“工具 > 映射网络驱动器”实用程序映射驱动器,它也能正常工作。

有什么因素会导致命令在批处理文件中运行时无法运行,但在手动输入时却可以正常运行?

答案1

两个选项:

1) 使用进程监视器 (SysInternals) 及其启动日志选项,过滤 CMD.EXE 和系统。监视登录过程和脚本执行。

2)在用户登录脚本中添加一个小测试,该脚本使用ROBOCOPY的待定切换到等待服务器/共享可用,即:

setlocal
set LOG_FILE=c:\temp\foo.log
echo %DATE% %TIME% >%LOG_FILE%
%SystemRoot%\System32\robocopy.exe \\server\directory c:\temp\test /tbd /eta /log+:%LOG_FILE%
echo %DATE% %TIME% >>%LOG_FILE%
endlocal

检查日志文件以查看 ROBOCOPY 是否必须等待服务器/共享可用。

答案2

我遇到了同样的问题。对我来说,解决方案是这样的:

  • 我无法将网络共享的根目录映射到字母。
  • 我不能在映射路径中使用尾随反斜杠。

所以:

net use B: \\MYSERVER没有起作用并立即导致错误 53。

net use B: \\MYSERVER\Components\没有起作用并在暂停后导致错误 53。

net use B: \\MYSERVER\Components 做过工作。

答案3

您可以尝试以下几件事。

  1. 尝试使用 fqdn 作为服务器名称,看看是否能获得更好的结果。

  2. 您也可以尝试禁用服务器上的任何防病毒软件以进行测试。我见过 McAfee 需要 1-3 分钟才能加载,然后才会允许任何类型的网络连接。当向 McAfee 询问此事时,他们说这是设置,以确保 McAfee 完全加载后才会允许任何 tcp/ip 连接。

答案4

如果没有脚本 - 如果您的批处理文件包含适用于 Windows 7 的 ifmember 语句,您可能会遇到问题。我一直在使用组策略来映射驱动器,因为我觉得如果需要的话,使用安全组会更容易、更灵活。

相关内容