如何获取“断开的网络驱动器”上的UNC驱动器信息

大卫·麦金托什(David I.

我们在分布式计算环境中运行一些流程。一台机器上的进程需要与另一台机器上的进程通信信息。这些信息的虔诚之一是某些文件的位置。因此,一台机器上的进程可能已将信息放入特定网络共享上的特定文件中,并且它需要将该位置传达给另一台机器上的进程。

我们的沟通部分没有问题。问题在于确定机器需要传播的“位置”信息。显然,涉及驱动器映射的文件路径是无用的:不同的计算机将具有不同的驱动器映射。因此,我们需要传达给它完整的UNC路径名。

在大多数情况下,我们可以轻松获得该信息。我们遇到问题的一个地方是需要获取此信息的Powershell脚本。当前,我们使用以下代码:

$l_logicalDisk = Gwmi Win32_LogicalDisk -filter "DeviceID = '$l_currentDrive'"
if ( $l_logicalDisk.DriveType -eq 4 )
{
    $l_base = $l_logicalDisk.ProviderName
}

$l_base提供\\computername\share信息。但是,在某些情况下,这将失败。有时,由于某种未知原因,即使可以访问该驱动器及其所有文件,映射的驱动器在Explorer.exe中也将显示为“ Disconnected Network Drive”。(实际上,正在运行的脚本甚至位于假定的“断开的网络驱动器”上。)在这种情况下,ProviderName逻辑磁盘信息字段为空白。似乎没有任何东西可以翻转“已断开网络驱动器”的状态,也没有找到任何更新ProviderName信息的方法。

因此,有谁知道(1)如何从Powershell内“重新连接”断开连接的网络驱动器,或者(2)如何在Powershell中以上述可靠的方法获取目录的UNC路径信息?谢谢。

疯狂技术员

您可以随时询问注册表,它应在断开连接的驱动器上工作(该驱动器$DrvLtr等于所需的网络映射驱动器号,例如Z或M):

Pushd
cd HKCU:
$UNC=(gci network|?{$_.Name -match "$DrvLtr"}|%{Get-ItemProperty -Path $_}).RemotePath
Popd

$ UNC应该是一个字符串,其值应类似于“ \ Server01 \ FileShare $”,我想这就是您要使用的。那你就可以做一个

$Path.Replace("$DrvLtr`:",$UNC)

你们都准备好了

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章