0

问题在线 (objNetwork.MapNetworkDrive CStr(colDrives.Item(i)), CStr(newMappingArray(j)), TRUE),我的脚本实际上尝试重新连接网络驱动器。它失败是因为它没有将其检测为字符串?

我试图在路径和驱动器号周围使用“”,但它可以工作,所以我不知道从这里去哪里..

代码描述它需要一个共享名称列表,检查是否有任何远程路径映射到驱动器。如果它们是,那么它会通过它们。取消映射它们,使用相同的驱动器号并使用新的路径引用重新映射它们(使用当前登录的凭据..

下面的代码

On Error Resume Next

''''''''''''''''''''''''''''' ARRAY SETUP '''''''''''''''''''''''''''''
DIM oldMappingArray(5)
oldMappingArray(0) = "\\DDCSHRNASP02\u_amr_project"
oldMappingArray(1) = "\\DDCSHRNASP02\U_AMS_Deployment"
oldMappingArray(2) = "\\DDCSHRNASP02\u_corp_share"
oldMappingArray(3) = "\\DDCSHRNASP02\u_dcwb_control_room"
oldMappingArray(4) = "\\DDCSHRNASP02\u_dis"
oldMappingArray(5) = "\\DDCSHRNASP02\u_dis15"

oldMappingArrayLength = UBound(oldMappingArray)


DIM newMappingArray(5)
newMappingArray(0) = "\\EUCPRDNAS02\u_amr_project"
newMappingArray(1) = "\\EUCPRDNAS02\U_AMS_Deployment"
newMappingArray(2) = "\\EUCPRDNAS02\u_corp_share"
newMappingArray(3) = "\\EUCPRDNAS02\u_dcwb_control_room"
newMappingArray(4) = "\\EUCPRDNAS02\u_dis"
newMappingArray(5) = "\\EUCPRDNAS02\u_dis15"

newMappingArrayLength = UBound(newMappingArray)


''''''''''''''''''''''''''''' WMI SETUP '''''''''''''''''''''''''''''
Set objNetwork = CreateObject("Wscript.Network")
Set colDrives = objNetwork.EnumNetworkDrives
colDrivesLength = colDrives.count
wscript.echo colDrivesLength

''''''''''''''''''''''''''''' MAIN LOOP '''''''''''''''''''''''''''''
For i=0 to colDrivesLength-1 Step 2
    'Gets every other in the array, making i equal to a PATH
wscript.echo i
For j=0 to oldMappingArrayLength
    'count through all of the old path names
    wscript.echo j
    wscript.echo "Drive Letter = " + colDrives.Item(i) 'Drive letter
    wscript.echo "Current Path = " + colDrives.Item(i+1) 'Path of the Drive Above

    wscript.echo "Tested Path = " + oldMappingArray(j) 'Path Currently Testing

    if colDrives.Item(i+1) = oldMappingArray(j) then
        'If the drive path from enumeration is equal to the old drive mapping array...
        wscript.echo "Item being added -> " + colDrives.Item(i)
        wscript.echo "to be mapped ---> " + newMappingArray(j)

        objNetwork.RemoveNetworkDrive colDrives.Item(i), True, True
        WScript.sleep 3000 'Wait 1.0 seconds
        objNetwork.MapNetworkDrive CStr(colDrives.Item(i)), CStr(newMappingArray(j)), TRUE
        exit For 'ends the oldMappingArrayLength loop if a match was found
    End If
Next
Next

Set objNetwork = Nothing
4

1 回答 1

0

没有测试它,这似乎是一个耗时且复杂的映射驱动器号的过程,所以我不会用它来打破我的头脑,但 wscript.echo "to be mapped ---> " + newMappingArray(j) 必须是罪魁祸首。+ 不是 VbScript 上的连接,但 & 是。

所以无论你在哪里使用 + 它都应该变成 &

您可以通过使用以下方式来构建您的数组来缩短您的脚本

oldMappingArray = ("u_amr_project", "U_AMS_Deployment", ...)

然后如果你需要整个字符串使用

"\\DDCSHRNASP02\" & oldMappingArray(j)
于 2012-05-17T19:33:02.177 回答