我们在分布式计算环境中运行一些进程。一台机器上的进程需要与其他机器上的进程进行信息通信。这些信息之一是某些文件的位置。因此,一台机器上的进程可能已将信息放入特定网络共享上的特定文件中,并且它需要将该位置传达给另一台机器上的进程。
我们的沟通部分没有问题。问题在于确定机器需要传播的“位置”信息。涉及驱动器映射的文件路径显然是无用的:不同的机器会有不同的驱动器映射。因此,我们需要向它传达完整的 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 中显示为“断开的网络驱动器”,即使该驱动器及其所有文件都可以访问。(实际上,正在运行的脚本甚至位于假定的“断开的网络驱动器”上。)在这种情况下,ProviderName
逻辑磁盘信息字段为空白。似乎没有任何东西可以从“断开的网络驱动器”中翻转状态,我也没有找到任何更新ProviderName
信息的方法。
那么,是否有人知道(1)如何从 powershell 中“重新连接”断开连接的网络驱动器或(2)如何在 Powershell 中以上述更可靠的方法获取目录的 UNC 路径信息?谢谢。