分散コンピューティング環境でいくつかのプロセスを実行します。あるマシン上のプロセスは、他のマシン上のプロセスと情報をやり取りする必要があります。これらの情報の 1 つは、特定のファイルの場所です。したがって、あるマシン上のプロセスが特定のネットワーク共有上の特定のファイルに情報を入力した可能性があり、別のマシン上のプロセスにその場所を伝える必要があります。
通信部分は問題ありません。問題は、マシンが配布する必要がある「位置」情報を決定することです。ドライブ マッピングを含むファイル パスは明らかに役に立ちません。マシンが異なればドライブ マッピングも異なります。したがって、完全な UNC パス名を伝える必要があります。
ほとんどの場合、その情報は簡単に入手できます。問題が発生している場所の 1 つは、この情報を取得する必要がある 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
は、論理ディスク情報のフィールドは空白です。「Disconnected Network Drive」からステータスを反転させるものはないようで、情報を更新する方法も見つかりませんでしたProviderName
。
したがって、(1) Powershell 内から切断されたネットワーク ドライブを「再接続」する方法、または (2) Powershell で上記のより信頼性の高い方法でディレクトリの UNC パス情報を取得する方法を知っている人はいますか? ありがとう。