2013-12-11 38 views
1

我試圖創建一個腳本來移除漫遊用戶的映射網絡驅動器 ,即如果映射與當前子網不相同 例如:如果用戶位於子網10.10.50,並映射網絡驅動器 10.10.40,映射將被刪除(但它必須是通用腳本導致我的公司有近50個分支機構/子網 我的問題是越來越來自enumrating映射驅動器的ip地址(使用 將其分辨爲數組,然後通過分割操作將其拆分爲vbscript從多個映射的網絡驅動器vbscript中獲取IP地址,然後使用它

Option Explicit 
Dim objNetwork, colDrives, i, DriveLetter, DrivePath 

Set objNetwork = CreateObject("Wscript.Network") 
Set colDrives = objNetwork.EnumNetworkDrives 
' extra section to troubleshoot 
If colDrives.Count= 0 Then 
WScript.Echo "Guy's Warning: No Drive Mapped " 
WScript.Quit(0) 
End If 

' here is where the script reads the Array 

Dim DriveServer 
For i = 0 To colDrives.Count -1 Step 2 ' this check the drive letter list 
DriveLetter = colDrives.item(i) ' this follows drive letter 
DrivePath = colDrives.Item(i+1) 
If Len(DriveLetter) > 0 Then 
DriveServer = getServerFromPath(DrivePath) 
If Not Ping(DriveServer) Then 
objNetwork.RemoveNetworkDrive DriveLetter, True, True 
End If 
End If 
Next 
+0

你嘗試過什麼,到目前爲止,怎麼結果從你所預期的有什麼不同? –

+0

您好,我已經enumarted網絡映射的驅動程序,之後,我得到的驅動程序列表包括驅動器字母爲例如z: - \\ 1234 \ fjfkj \第二行,x: - \\ 5532 \ fjjeh等..,有3個映射的驅動程序,問題是提取映射的驅動器完整路徑的服務器名稱(又名第一個名稱給我們的服務器的IP地址與當前本地計算機的IP地址進行比較(我沒有一個想法如何做到這一點...(從共享映射的網絡地址提取IP) – user3088460

回答

0

您可以從一個路徑\\10.10.50.23\share這樣提取服務器名稱或IP地址:

Function GetServerFromPath(p) 
    GetServerFromPath = Split(Mid(p, 3), "\")(0) 
End Function 

WScript.Echo GetServerFromPath("\\10.10.50.23\share") 
+0

親愛的,首先謝謝你的回答,但腳本不適合我(也許我做錯了什麼...: <),無論如何,我會盡力解釋更好,我們公司擁有超過1000個站點,大約有50個子網,我需要一個腳本來從位於adifferenet子網上的站點刪除「不需要的共享網絡驅動程序」,然後映射到其映射的共享網絡只有驅動器,所以網絡質量帶寬將是保持。你能幫助我改變這個劇本嗎?它必須是一個通用腳本。 – user3088460

+0

@ user3088460「不起作用」是一個不足的問題描述。 *正確結果*與您預期的結果有什麼不同?此外,在這種網絡中,您應該擁有與AD站點相關聯的子網,並通過站點特定的策略映射驅動器。 –