我需要在远程会话上获得真正的映射驱动器,我读取path和名称的远程registry,但在\ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ MountPoints2中缺less标签(驱动器盘符)
如果我阅读HKCU \networking,我只有持久驱动器(GPP驱动器的状态replace丢失)。
我如何findpath,名称和标签?
function get-Drives { param ( [ValidateNotNullOrEmpty()] $Computername, [ValidateNotNullOrEmpty()] $SID ) try { $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('USERS', $computerName) $RegKey = $Reg.OpenSubKey("$SID\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MountPoints2") $lecteurs = $RegKey.GetSubKeyNames() $lecteurs | ?{$_ -notlike '{*}'} | %{ $RegKey = $Reg.OpenSubKey("$SID\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MountPoints2\\$_") $_LabelFromReg = $regKey.GetValue('_LabelFromReg') if ($_LabelFromReg) { [pscustomobject]@{ Name = $_LabelFromReg Label = '' Path = $_ -replace('#','\') } } } } catch { } }
远程获取映射的驱动器容易出错。 从用户那里得到清单要简单得多,而且要麻烦得多。 这是一个简短的WSH JScript脚本,你可以给用户。 用户可以运行它来获取映射驱动器和位置的快速对话框:
// mappedDrives.js var wshNetwork = new ActiveXObject("WScript.Network"); var networkDrives = wshNetwork.EnumNetworkDrives(); var results = ""; for ( var i = 0; i < networkDrives.length; i += 2 ) { var resultLine = networkDrives.Item(i) + " -> " + networkDrives.Item(i + 1); if ( results != "" ) { results += "\r\n" + resultLine; } else { results = resultLine; } } var wshShell = new ActiveXObject("WScript.Shell"); if ( results != "" ) { wshShell.Popup(results, 0, "Mapped Drives"); } else { wshShell.Popup("No mapped drives detected", 0, "Mapped Drives"); }
编辑:正如@Alban所指出的那样,这不会获得当前登录用户的映射驱动器,只有计算机映射的驱动器。 我将在这里留下答案,因为这对将来需要的人可能是有用的,但显然不是OP所需要的。
假设您的服务台可以访问远程WMI调用,则可以使用Win32_LogicalDisk
WMI
类来完成此操作。 映射的驱动器是DriveType
4,所以过滤,并返回DeviceID
, ProviderName
和VolumeName
。 或者将其重命名为便于阅读,如:
gwmi -class win32_logicaldisk -Computer $ComputerName | Where{$_.DriveType -eq 4} | select @{n='DriveLetter';e={$_.DeviceID}},VolumeName,@{n='NetworkPath';e={$_.ProviderName}}
够简单吧? 以下是我在本地计算机上运行的内容:
DriveLetter VolumeName NetworkPath ----------- ---------- ----------- X: OSDisk \\localhost\c$\temp
我相当肯定,应该对任何当前映射驱动器的远程计算机工作。