我需要在远程会话上获得真正的映射驱动器,我读取路径和名称的远程注册表,但\ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ MountPoints2
中缺少标签(驱动器号)如果我读HKCU \ Network我只有持久驱动器(缺少状态为Replace的GPP驱动器)。
如何找到路径,名称和标签?
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 {
}
}
答案 0 :(得分:1)
远程获取映射驱动器容易出错。从用户那里获取列表要简单得多,也不那么麻烦。这是一个可以提供给用户的简短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");
}
答案 1 :(得分:0)
编辑正如@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
我非常肯定应该针对任何当前映射的驱动器对远程计算机起作用。