Login | |
|
 |
RE: List mapped drives on remote machine - 10/16/2006 11:42:37 PM
|
|
 |
|
| |
gurner78
Posts: 7
Score: 0
Joined: 10/16/2006
Status: offline
|
Or, borrowing from your script, i need to know who and what mapped drives have been created on workstations by the users in a very disjointed domain, to try and control via a GPO/KIX/VBS type logon script to query AD. so I came up with this variation of your script, to put in a central NETLOGON Share as a VBS file to upload the mapped drive details for a user to a share on a NAS box and marked in Red my additions ********************************************************** 'Define variables, constants and objects 'define text file and username Const ForAppending = 8 Const OverwriteExisting = TRUE dim WSHNetwork, UserString set WSHNetwork = CreateObject("WScript.Network") UserString = WSHNetwork.UserName Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile _ ("" & UserString & ".txt", ForAppending, True) ' rest strComputer="localhost" 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 objTextFile.WriteLine subkey & ":" & vbTab & dapath Next objTextFile.Close End If End If End If Next Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.CopyFile "" & UserString & ".txt" , "\\nas1\Map\", OverwriteExisting ************************************************
_____________________________
Cheers
|
|
| |
|
|
|
 |
RE: List mapped drives on remote machine - 10/17/2006 6:22:17 PM
|
|
 |
|
| |
ginolard
Posts: 1023
Score: 21
Joined: 8/10/2005
Status: offline
|
If you're going to be running this script as part of a logon script then you really don't need to do it this way. You can use WMI to get the Mapped drive information by querying Win32_LogicalDisk Where DriveType=4 The only drawback of that method (and the reason I created the above code) is that it won't work when run against a REMOTE machine.
_____________________________
Author of ManagePC - http://managepc.net AD Query Template - http://www.visualbasicscript.com/m_40609/tm.htm Consolidated Scripting Framework - http://www.visualbasicscript.com/m_59109/tm.htm
|
|
| |
|
|
|
|
|