上記のスクリプトにはわずかな問題があります(実際には、スクリプトが適用されている場所ではありません)。
ユーザーがFQDN\server1.ourdomainではなく\server1などの短い名前でドライブをマップした場合、スクリプトは機能せず、単に無視されます。
ショートネームを「古い名前」変数として使用するようにスクリプトを変更すると、ショートネームでマップされたドライブで機能しますが、FQDNでエラーが発生し、FQDNドライブのマップを解除して再マップできません。
サーバー名がすでに変更されているため、最初にFQDNを再マッピングしてから、長い名前でエラーが発生しないため、短い名前を再マッピングすることでこれを回避しました。これを行うには、より雄弁な方法があると確信していますが、スクリプトを短い名前で再適用しただけです。以下のように2番目のパスで:
oldserver = "\\server1.ourdomain"
newserver = "\\server2.ourdomain"
Set net = CreateObject("WScript.Network")
Set drives = net.EnumNetworkDrives
For i = drives.Count - 1 To 0 Step -2
If LCase(Left(drives(i), Len(oldserver))) = oldserver Then
net.RemoveNetworkDrive drives(i-1), True, True
net.MapNetworkDrive drives(i-1), Replace(drives(i), oldserver, newserver), True
End If
Next
oldserver = "\\Server1"
newserver = "\\server2.ourdomain"
Set net = CreateObject("WScript.Network")
Set drives = net.EnumNetworkDrives
For i = drives.Count - 1 To 0 Step -2
If LCase(Left(drives(i), Len(oldserver))) = oldserver Then
net.RemoveNetworkDrive drives(i-1), True, True
net.MapNetworkDrive drives(i-1), Replace(drives(i), oldserver, newserver), True
次の場合は終了
1つの例外を除いて正常に動作します。ユーザーが\server1に複数のドライブをマップしている場合、ユーザーのWindowsエクスプローラーまたはコンピューターでは、1つのドライブへの変更のみが反映されますが、「netuse」を使用するようにすべてのドライブが正しく再マップされます。のコマンドは、それらすべてのマッピングが変更されたことを示していますか?
ログオフしてログオンすると、エクスプローラーにすべてのドライブが新しい名前で正しく表示されて正しく反映されるため、エクスプローラーの表示に関する奇妙な問題のようです.........非常に奇妙でアイデアはありますか?
自分で試してみると、1つのドライブを短いドライブにマッピングし、1つのドライブを長いドライブにマッピングしてこれをテストし、両方を更新しますが、1つの変更のみが表示されるのでわかりますか?