gpt4 book ai didi

networking - 用于更改用户手动将驱动器映射到具有新服务器名称的新服务器的脚本

转载 作者:行者123 更新时间:2023-12-02 02:11:54 24 4
gpt4 key购买 nike

我有数百个用户,每个用户都手动将驱动器映射到文件服务器上的各种位置/文件夹。

我正在将数据迁移到具有新名称但保持相同文件夹结构的新服务器,因此需要编写重新映射其驱动器的脚本,如果它们遵循统一的映射模式,我可以使用一个简单的脚本来完成此操作,但作为我说都是独一无二的手工映射。

所以我需要询问他们当前的映射并将服务器名称从\server1.ourdomain\whatever path 更改为\server2.ourdomain\whatever path 等,因为我说路径主要是各种文件夹和级别结构很深很复杂。

我打算使用 VB 脚本并将其作为 GPO 在用户站点上运行。

最佳答案

尝试这样的事情:

oldserver = "\\server1.ourdomain"
newserver = "\\server2.ourdomain"

Set net = CreateObject("WScript.Network")
Set drives = net.EnumNetworkDrives

For i = drives.Count - 1 To 0 Step -2
If LCase(Left(drives(i), Len(oldserver))) = oldserver Then
net.RemoveNetworkDrive drives(i-1), True, True
net.MapNetworkDrive drives(i-1), Replace(drives(i), oldserver, newserver), True
End If
Next

编辑:由于您的所有示例都附加了 .ourdomain,因此我假设您一直在使用 FQDN。如果 NetBIOS 名称也被使用,上面的脚本当然对它们不起作用。但是,您不能仅将 oldserver 缩短为 \\server1,因为这样指令

Replace(drives(i), oldserver, newserver)

会将 UNC 路径 \\server1.ourdomain\share 更改为 \\server2.ourdomain.ourdomain\share,这显然行不通。从 oldservernewserver 中删除域部分,或者(如果你想强制执行 FQDN)使用类似这样的东西:

domain    = ".ourdomain"
oldserver = "\\server1"
newserver = "\\server2" & domain

Set net = CreateObject("WScript.Network")
Set drives = net.EnumNetworkDrives

For i = drives.Count - 1 To 0 Step -2
net.RemoveNetworkDrive drives(i-1), True, True
If InStr(1, drives(i), domain, vbTextCompare) > 0 Then
newpath = Replace(drives(i), oldserver & domain, newserver)
Else
newpath = Replace(drives(i), oldserver, newserver)
End If
net.MapNetworkDrive drives(i-1), newpath, True
Next

关于networking - 用于更改用户手动将驱动器映射到具有新服务器名称的新服务器的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12351518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com