我在 Stack Exchange 上发布了这个问题,但至今尚未得到成功的答复(我收到的一个建议在我的情况下被否决了,因为 IT 安全限制禁用了网络驱动器的 Windows 凭据管理器),有人建议我在这里发布,以增加获得可用(就我而言)解决方案的机会。以下是发布在那里的问题:
我公司的大部分员工目前都在家办公,必须通过 VPN 进入办公室网络。因此,从技术上讲,我们所有的网络驱动器都处于断开状态,直到我们登录 VPN。连接后,我们可以简单地打开文件资源管理器窗口并打开每个网络驱动器,以在 Windows 中重新建立/刷新连接,但超过 2 或 3 个驱动器很麻烦,我们的一些成员甚至没有想过每天在打开一些需要映射网络驱动器的程序之前对我们的主项目驱动器(我们办公室使用的唯一通用驱动器号)执行此操作,因此可能会弄乱我们的文件或其中的链接。
所需解决方案:我正在寻找一个可以运行以刷新或重新连接驱动器的批处理或 cmd 文件,而无需明确使用NET USE
(如果可能的话,请进一步了解原因)或通过使用批处理文件打开网络文件夹的快捷方式来打开文件资源管理器。如果这不可能,我将坚持使用我已有的解决方案NET USE
,但希望得到帮助以解决下面概述的问题。
我有几个解决方案,它们有点过于侵入,因为它们需要某种形式的交互才能在启动后关闭它们,而不是运行、到达 eof,然后使用 关闭TIMEOUT /T 5
。我希望可以有一些更精简的方法,或者至少不那么侵入,我可以用它来避免我目前正在处理的这些不必要的交互:
每个驱动器上的文件夹的快捷方式用于“ping”该驱动器以进行刷新,但这会打开文件资源管理器窗口,可能会中断工作流程。如果可能的话,我想禁止打开此窗口,或者至少立即关闭它(我知道这不是文件资源管理器的工作原理)。
批处理文件测试所有映射驱动器是否断开连接,然后尝试重新连接,有时会导致 cmd 窗口中的用户输入中断工作流程(我们有两个安全级别,每个级别都有自己的登录凭据,我们中的几个人使用这两个凭据映射了网络驱动器,因此当参数
/USER:%username% %password%
不起作用时,一些断开连接的驱动器将需要手动输入用户名和密码,这似乎无法避免。服务器和网络位置都不NET USE
是可行的安全级别测试,因为它们是根据项目本身而不是所需的安全级别标记的,所以我唯一的补救措施就是抑制对用户输入的要求)。多个批处理文件,每个驱动器一个,要求用户根据自己的需要手动复制和更改批处理文件(我们进行的每个项目都只使用一个驱动器,即使这样,有些人也使用不同的项目),然后更新任务计划程序以运行他们创建的每个文件(完全不可取,就我而言,这是不可接受的)。如果没有其他可以修改或不受干扰地工作的东西,我可以使用它在我们公司的默认项目驱动器号上运行,让人们担心根据需要重新连接其他驱动器。
我安排了一项任务,只要我们的 VPN 客户端报告连接,就会执行该任务,由于我们的家庭网络和/或我们与 VPN 服务器之间的连接,该任务可能一天发生多次(在初次登录后,我曾有多达 4 或 5 次“连接”事件触发我的任务,尽管我只需要明确登录一次),这可能会导致工作流程进一步中断,而不仅仅是初次 VPN 登录运行。我愿意接受任何使用的解决方案,NET USE
只要我可以在 Windows 登录密码不起作用时抑制用户输入的请求,或者如果我可以阻止打开文件资源管理器窗口,我就可以接受快捷方式。我更喜欢其他解决方案,但我知道这可能行不通。
我已经使用进行了测试DIR //server/foo
,但是它超时了,原因与 VPN 登录成功后文件资源管理器不显示网络驱动器为“已连接”的原因相同。
我还尝试过将任务计划程序设置为通过网络连接运行程序,而不是通过 VPN 客户端的“连接”事件运行程序,结果也参差不齐,主要是因为它运行不可靠,甚至根本无法运行,因为我需要等到通过 VPN 连接,而不仅仅是通过以太网电缆连接标准互联网。为此,我尝试了这两种方法这里,但 VPN 登录后可用的网络似乎都无法正确触发任务,尽管通过任务计划程序手动触发任务显示操作可以正常运行。因此,我认为这是失败的,但如果没有更精简的解决方案,或者我可以保证这种方法不会像观察 VPN 客户端的连接事件那样频繁触发(最好每次登录只触发一次),我可以重新考虑。
此时,我只能使用两种解决方案,这两种解决方案很有可能会中断工作流程并让用户感到厌烦,因此我不太想将其作为最终解决方案发送出去(NET USE
驱动器断开连接的位置的 for 循环和打开快捷方式的批处理文件,该快捷方式会在窗口的前面和中间打开),还有一种解决方案,我认为范围有限,是最后的手段。如果没有更好的方法来处理前两个问题,我会尽量解决,但与此同时,我将非常感谢任何帮助/建议!
编辑:
顺便提一下,我确实希望 cmd 窗口短暂弹出,然后在操作完成后自动关闭(就像使用快捷方式解决方案一样),因此一定程度的工作流程中断可能是不可避免的。我认为不可接受的是,我无法将其最小化并阻止用户表单直接或间接地与其交互,以便在 cmd 或结果窗口从用户之前所在的程序中获取活动窗口状态后关闭它。
补充说明:
总而言之,我正在寻找一种刷新网络驱动器连接的解决方案,该解决方案不依赖于凭据管理器,如果网络驱动器凭据与 Windows 登录凭据不同,则不需要用户输入,并且不会弹出需要用户关闭的窗口。在自动关闭之前弹出 cmd 或子进程窗口导致的短暂工作流中断是可以接受的,但优先考虑我已经运行的两种解决方案之一。再次感谢您的任何意见!
答案1
由于缺乏适合我们设置的更好的答案(一定会记得 Ben 在我的帖子中的回答这里以备后用,万一我能将它用于较低的安全配置文件),我决定对批处理文件采用更有限的范围,因为我还没有找到任何信息可以让我在尝试刷新与所有已保存的网络驱动器的连接时抑制文件资源管理器窗口或从 cmd 窗口请求用户输入(用于密码)。
由于根据我们的指南,必须重新连接的一个驱动器普遍分配给相同的字母(映射更改取决于我们所进行的主要项目),我选择仅刷新此驱动器,因为此驱动器的凭据将始终与 Windows 登录凭据匹配,因此如果密码错误,不会要求用户输入。
我会密切关注这个问题,以便如果其他人出现并且有更好的解决方案,我一定会将选定的答案交换给他们。