cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
progdlp
Engaged Sweeper
Is there a way to get drive mappings for all computers on a network in lansweeper?
4 REPLIES 4
mattglg
Engaged Sweeper
I use a modified vbscript from the MS Script Centre for this. The custom action is just {actionpath}RemoteDrives.vbs {computer}

'Define variables, constants and objects

strComputer = Wscript.Arguments.Item(0)
strOutput=""
Const HKEY_USERS = &H80000003
Set objWbem = GetObject("winmgmts:")
Set objRegistry = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

'Go and get the currently logged on user by checking the owner of the Explorer.exe process.

Set colProc = objWmiService.ExecQuery("Select Name from Win32_Process" & " Where Name='explorer.exe' and SessionID=0")

If colProc.Count > 0 Then
For Each oProcess In colProc
oProcess.GetOwner sUser, sDomain
Next
End If

'Loop through the HKEY_USERS hive until (ignoring the .DEFAULT and _CLASSES trees) until we find the tree that
'corresponds to the currently logged on user.
lngRtn = objRegistry.EnumKey(HKEY_USERS, "", arrRegKeys)

For Each strKey In arrRegKeys
If UCase(strKey) = ".DEFAULT" Or UCase(Right(strKey, 8)) = "_CLASSES" Then
Else

Set objSID = objWbem.Get("Win32_SID.SID='" & strKey & "'")

'If the account name of the current sid we're checking matches the accountname we're looking for Then
'enumerate the Network subtree
If objSID.accountname = sUser Then
regpath2enumerate = strkey & "\Network" 'strkey is the SID
objRegistry.enumkey hkey_users, regpath2enumerate, arrkeynames

'If the array has elements, go and get the drives info from the registry
If Not (IsEmpty(arrkeynames)) Then
For Each subkey In arrkeynames
regpath = strkey & "\Network\" & subkey
regentry = "RemotePath"
objRegistry.getstringvalue hkey_users, regpath, regentry, dapath
' 'wscript.echo subkey & ":" & vbTab & dapath
stroutput = stroutput & subkey & ":" & vbTab & dapath & vbCr
Next
End If
End If
End If
Next
strOutput="Drives for user " & suser & " using PC "& strComputer & vbCr & vbCr & stroutput
wscript.echo stroutput
i_kulgu
Champion Sweeper
You can do this with a vbscript.
Get the script below and copy it to your actionpath.
Make a computer action like : {actionpath}driver_mapping.vbs
That should do the trick.

Ps. if you can change the script where you can get all the outputs in 1 screen would work better, i couldn't manage to do that.
i.kulgu wrote:
You can do this with a vbscript.
Get the script below and copy it to your actionpath.
Make a computer action like : {actionpath}driver_mapping.vbs
That should do the trick.

Ps. if you can change the script where you can get all the outputs in 1 screen would work better, i couldn't manage to do that.



The following may do what you wanted.. I noticed in your script that you'd set "Connect" but not used it so it only ever returned the mapped drives of the local PC, not the remote PC... anyway... Save the following as "Drive_Mapping.vbs"


CompName = wscript.arguments.Item(0)
set wshShell=CreateObject("wscript.shell")

Set objWMI = GetObject("winmgmts:\\" & CompName & "\root\cimv2")


Set oDrives = objWMI.ExecQuery("select * from Win32_MappedLogicalDisk")


strTitle="Network Drive Mappings"

strmsg="Drive Mappings on " & CompName & vbcrlf & vbcrlf


For Each objDrive in oDrives
strMsg=strMsg & ObjDrive.DeviceID & " " & objDrive.ProviderName & vbcrlf
Next

wshShell.Popup strMsg,-1,strTitle,vbinformation


and add your custom action as.... {actionpath}Drive_Mapping.vbs {computer}

Note that this can sometimes take a while to enumerate the "objDrive.ProviderName"
Hemoco
Lansweeper Alumni
This is currently not possible, I suggest to add it to the wishlist.

New to Lansweeper?

Try Lansweeper For Free

Experience Lansweeper with your own data.
Sign up now for a 14-day free trial.

Try Now