Сопоставление сетевого диска и проверка его существования в VBScript - PullRequest
2 голосов
/ 07 сентября 2011

Мне нужно сопоставить сетевой диск с сетевым путем, используя VBScript. Сетевой путь читается непосредственно из ввода. Как мне подключить сетевой диск и как проверить, существует ли введенный сетевой путь?

Ответы [ 2 ]

6 голосов
/ 27 марта 2012

Я создал подпрограмму для сопоставления дисков ...

    MapDrive "H:","\\server\share"

    Sub MapDrive(letter, uncpath)
         on error Resume Next
         dim drivetype, currentmapping

        dim objWMIService 
        dim colDisks, objDisk

        'Set wshnetwork = CreateObject("Wscript.Network")
        Set objWMIService = GetObject("winmgmts:" & _
             "{impersonationLevel=impersonate}!\\.\root\cimv2")
        Set colDisks = objWMIService.ExecQuery _
            ("Select * from Win32_LogicalDisk Where Name = """ & letter & """")
        For Each objDisk In colDisks        
             drivetype = objDisk.DriveType      
            currentmapping = objDisk.ProviderName
        Next    


        if (drivetype <> 4 and drivetype <> 0) then
            NotifyUser ucase(letter) & " cannot be mapped due to a physical device already reserving that drive letter" & vbcrlf & _
                        "This is most frequently caused by a thumbdrive or external disk.",5
            exit Function
        end if

        if (ucase(currentmapping) = ucase(uncpath)) then
            exit function
        end If

        if (drivemappings.Exists(uncpath)) then
            drivemappings.Add uncpath & "(" & letter & ")", letter
        else 
            drivemappings.Add uncpath, letter
        end if

        if (currentmapping <> "") then
                wshnetwork.RemoveNetworkDrive letter,,True
        end if

        wshnetwork.MapNetworkDrive letter, uncpath, true

        on Error goto 0
     End Sub

Я оставляю на ваше усмотрение обработку ошибок и т. Д. В качестве альтернативы, если вы предпочитаете маршрут сетевого использования, вы можете сделать что-то вроде ..

dim wshShell
Set wshShell = CreateObject("WScript.Shell")
wshshell.run "cmd /c net use H: ""\\server\share""",1,True

Вы можете сделать еще один шаг, чтобы автоматически использовать следующую доступную букву диска для сопоставления дисков, используя пример Созданные сценаристы .

Set objDictionary = CreateObject("Scripting.Dictionary")

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")

For Each objDisk in colDisks
    objDictionary.Add objDisk.DeviceID, objDisk.DeviceID
Next

For i = 67 to 90
    strDrive = Chr(i) & ":"
    If objDictionary.Exists(strDrive) Then
    Else
        Wscript.Echo strDrive & " is the next available drive letter."
        Wscript.Quit
    End If
Next
Wscript.Echo "There are no available drive letters on this computer.”

Iнадеюсь, что это полезно.

3 голосов
/ 07 сентября 2011

запустите следующую команду в вашем файле VBScript:

net use [NetDrive:] [Network Path]

например:

net use Z: \\Hadi\temp

Пример команды отобразит \ Hadi \ temp на Z:

Также взгляните на этот файл VBScript для сопоставления сетевых дисков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...