USBハードディスクが \\pc1\共有 もしくは \\pc2\共有 のどちらかとして共有されるシチュエーションを想定し、 \\pc1 もしくは \\pc2 のどちらかに共有が見つかればドライブをマップします。この際、目的のドライブレターに他のネットワーク共有をマップされていたら、その共有は切断した上でマップしなおします。
利用する場合は、特に DoMount() をニーズにあわせて書き直してください。正直なところエラーチェックやテストは不十分です。VBScript自体、ここ数年間で2つしか作ったことがないので、中身にあまり期待はしないでください...
Option Explicit
'On Error Resume Next
If DoMount Then
WScript.Echo "フォルダを S: にマウントしました。"
Else
WScript.Echo "フォルダをマウントできなかったようです..."
End If
Function DoMount
If TryToConnect("S:", "\\pc1\共有") Then
DoMount = True
ElseIf TryToConnect("S:", "\\pc2\共有") Then
DoMount = True
Else
DoMount = False
End if
End Function
Function IsShareExist(ShareName)
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
IsShareExist = objFSO.FolderExists(ShareName)
End Function
Function TryToConnect(Drive, ShareName)
TryToConnect = False
If IsShareExist(ShareName) Then
TryToConnect = DoMapNetwork(Drive, ShareName)
End If
End Function
Function DoMapNetwork(strDrive, strPubFolder)
Dim objWshNetwork
Set objWshNetwork = WScript.CreateObject("WScript.Network")
Dim CurrentMapped
DoMapNetwork = False
CurrentMapped = GetMapNetwork(strDrive)
If CurrentMapped = strPubFolder Then
DoMapNetwork = True
Exit Function
ElseIf CurrentMapped <> "" Then
objWshNetwork.RemoveNetworkDrive strDrive, True
End If
objWshNetwork.MapNetworkDrive strDrive, strPubFolder
DoMapNetwork = (Err.Number = 0)
End Function
Function GetMapNetwork(strDrive)
Dim WshNetwork, oDrives, i
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives
GetMapNetwork = ""
For i = 0 to oDrives.Count - 1 Step 2
If strDrive = oDrives.Item(i) Then
GetMapNetwork = oDrives.Item(i + 1)
End If
Next
End Function
0 件のコメント:
コメントを投稿