如何获取有关"Disconnected Network Drive"的 UNC 驱动器信息



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

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

在大多数情况下,我们可以轻松获取这些信息。我们遇到问题的地方是需要获取此信息的PowerShell脚本。目前,我们使用以下代码:

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

$l_base提供\computernameshare信息。但是,在某些情况下,这会失败。有时,由于某些未知原因,即使驱动器及其所有文件都可以访问,映射驱动器也会以"断开网络驱动器"的形式出现。(实际上,正在运行的脚本甚至位于所谓的"断开网络驱动器"上。)在这种情况下,逻辑磁盘信息的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)

你们都设置了

相关内容

  • 没有找到相关文章

最新更新