登录脚本 -> 如果映射驱动器的 unc = this,则断开连接并重新映射,否则不执行任何操作

登录脚本 -> 如果映射驱动器的 unc = this,则断开连接并重新映射,否则不执行任何操作

我正在移动文件服务器。完成后,我必须更改映射驱动器号在网络范围内使用的 UNC 路径以指向新机器。我想通过 VBS 登录脚本来处理更改,我将把该脚本附加到 OU 以映射不同的驱动器。

该脚本的目标是首先获取 F:(或任何驱动器)的 UNC 路径;如果它等于“\old_server\files”,则断开连接,然后将其重新连接为“\new_server\files”。否则,什么也不做。总共有 5 条路径/驱动器需要执行此操作。

我尝试使用计算机性能已连接的脚本但无法让它工作。在多台机器上测试时,它没有断开旧驱动器。

任何帮助都将受到赞赏。

答案1

如果你有域名,那么我会考虑这样做驱动器映射的组策略首选项。您应该能够让它将给定的 UNC 映射到给定的驱动器,并自动替换任何存在的旧映射。

答案2

由于您实际上只是测试旧映射是否存在,并删除旧映射以进行新映射,那么为什么不直接对通常已映射的驱动器号使用 Net X: /delete,然后继续执行 Net Use X: 语句呢?如果新服务器已存在连接,则删除并重新映射连接不会造成任何损害。

答案3

有点晚了,但这是你想要的吗?这必须在每台电脑上本地运行 - 例如在登录脚本中,就像你说的

Set objShell = CreateObject("Wscript.Shell")

Set objNet = WScript.CreateObject("Wscript.Network") 

Set objExec = objShell.Exec("net use ") 
strMaps = LCase(objExec.StdOut.ReadAll)
MapArray=split(strMaps,CHR(10))

for x=1 to ubound(mapArray) 

    if instr(mapArray(x),"i:") AND instr(mapArray(x),"\oldserver1\sharex$") then 
        objNet.RemoveNetworkDrive "i:",true,true
        objNet.MapNetworkDrive "I:" , "\newserver1\shareX" 
    end if

    if instr(mapArray(x),"j:") AND instr(mapArray(x),"\\oldserver2\shareY$") then
            objNet.RemoveNetworkDrive "J:"
            objNet.MapNetworkDrive "J:" , "\\newserver2\shareX$"  
    end if  

next

相关内容