2012-05-17 2 views
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 

ответ

0

Не проверить его, это кажется timetaking и сложное процесс для сопоставления дисков, поэтому я не собираюсь ломать голову с ним, но wscript.echo «для сопоставления --->» + newMappingArray (j) должен быть culpit. + не является конкатенацией на VbScript, а & .

Поэтому везде, где вы используете +, оно должно стать &

Вы могли бы сократить свой скрипт, используя следующий способ построить ваш массив

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

, а затем, если вам нужна вся строка использовать

"\\DDCSHRNASP02\" & oldMappingArray(j) 
+0

хаха хорошо им использовать для PHP, так что да. Я использую только эхо, поэтому я могу видеть вывод в моем файле, пока я его запускаю. Я похвалил эту линию, и она все еще не работала. Мне нравится идея сокращения такого массива, но действительно есть сотни серверов и разделов, которые мы тестируем, и я сократил этот сценарий для этой цели. Однако я думаю, что вся строка является проблемой, потому что если я вставляю строку в код для добавления, то она работает для сопоставления диска. –

+0

hmm, иногда вам нужно сначала назначить содержимое массива переменной, не спрашивайте меня, почему это именно то, что отталкивает меня от vbscript, большую часть времени я программирую сейчас в Ruby, это весело. Итак, попробуйте сопоставить = newMappingArray (j): drive = colDrives.item (i): objNetwork.MapNetworkDrive drive, mapping, TRUE – peter

+0

ok, так что это отдельные строки ... получили его. хотя это не имело никакого значения. Я могу повторить переменные, и все в порядке. только когда он передается в функцию MapNetworkDrive, он больше не работает. sooo расстраивает. –

Смежные вопросы