Мы запускаем некоторые процессы в распределенной вычислительной среде. Процессы на одной машине должны обмениваться информацией с процессами на других машинах. Одним из таких фрагментов информации является расположение определенных файлов. Таким образом, процесс на одном компьютере может поместить информацию в конкретный файл на определенном сетевом ресурсе, и ему необходимо сообщить об этом местоположении процессу на другом компьютере.
У нас нет проблем с коммуникативной частью. Проблема заключается в определении информации о «местоположении», которую машина должна распространять. Пути к файлам с сопоставлением дисков явно бесполезны: разные машины будут иметь разные сопоставления дисков. Таким образом, нам нужно сообщить полное имя пути 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 для каталога более надежным методом, описанным выше? Спасибо.