Проблема находится в строке (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
хаха хорошо им использовать для PHP, так что да. Я использую только эхо, поэтому я могу видеть вывод в моем файле, пока я его запускаю. Я похвалил эту линию, и она все еще не работала. Мне нравится идея сокращения такого массива, но действительно есть сотни серверов и разделов, которые мы тестируем, и я сократил этот сценарий для этой цели. Однако я думаю, что вся строка является проблемой, потому что если я вставляю строку в код для добавления, то она работает для сопоставления диска. –
hmm, иногда вам нужно сначала назначить содержимое массива переменной, не спрашивайте меня, почему это именно то, что отталкивает меня от vbscript, большую часть времени я программирую сейчас в Ruby, это весело. Итак, попробуйте сопоставить = newMappingArray (j): drive = colDrives.item (i): objNetwork.MapNetworkDrive drive, mapping, TRUE – peter
ok, так что это отдельные строки ... получили его. хотя это не имело никакого значения. Я могу повторить переменные, и все в порядке. только когда он передается в функцию MapNetworkDrive, он больше не работает. sooo расстраивает. –