技術QA:如何通過組策略映射網絡驅動器並實現更名?

引子:

最新在做一個AD的項目,客戶老盧大哥是一個非常認真負責的人,做事非常嚴謹。項目中要規劃部署一臺文件服務器,並通過組策略給用戶映射網絡驅動器。如下圖所示:

網絡驅動器映射完成之後,老盧大哥認爲這個驅動器名稱很長,既不好看也不方便用戶使用,希望映射後能夠直接更名,達到如下圖所示的效果:
 
既然老盧大哥有了要求,那小弟當然要完成啦。說幹就幹,先到百度上搜了一下,不一會就找到了如下這篇文章:
有誰知道如何在命令行下給網絡映射的驅動器改名呀?
3樓的牛人就給了一個角本,如下所示: 

 

把角本下載了下來,打開一看,這個角本還是蠻強大的網絡驅動器映射角本,按照自已的要求修改後,首次運行成功,但在後面測試中就報錯了,如下圖所示:

經研究發現,如果客戶端先前已經映射過網絡驅動器,並且跟角本中映射的網絡驅動器盤符不一致,就會報上圖所示的錯誤。如果網絡驅動器盤符一致,則運行正常,如下圖所示:

研究了半天角本,未果。看來只能轉換思路才行,想到可以在角本處理前,可先把原有客戶終端用戶的網絡驅動器映射刪除不就解決了這個問題嗎?於是又拿出法寶--百度,又一篇文章就出來了哈,如下所示:
如何刪除所有的網絡驅動器和指定的網絡驅動器?
神奇,又是WinOS 3樓的牛人給出了一個角本,如下圖所示:

編輯成角本後測試,發現正是自己要找的東東。
然後工作就是把兩個角本合併,測試、修改、測試,反覆幾次後,最終得到了一個還算是完美的結果。美中不足的就是,客戶終端用戶自己映射的網絡驅動器,每次用戶登錄角本一執行就會被刪除。
世上沒有完美事物,其實或許,這個問題本身就不是問題。首先,我們要實現集中管理和桌面標準化,也不應允許客戶終端用戶隨便去映射網絡驅動器;再次,客戶終端用戶經常使用的共享文件夾,我們都已經幫他們映射好了網絡驅動器,如果以後發現確實有需要但是在角本沒有映射的,我們幫他加上不就好了。對,那就先這麼着吧,希望老盧大哥能夠滿意。以後有時間話再去研究研究吧,必竟編寫角本並不是自己所擅長的事情。
 
Q:
如何通過組策略映射網絡驅動器並實現更名?
 
A:
最終的角本如下所示:
 
'第一部分:刪除所有映射網絡驅動器 
 
Set objNet = CreateObject("Wscript.Network")
Set objNetdrv = objnet.EnumNetworkDrives 
'刪除所有映射網絡驅動器
For i = 0 to objNetdrv.Count - 1 Step 2
    objnet.RemoveNetworkDrive objNetdrv.Item(i),True,True
Next
 
'第二部分:等待第一部分刪除所有映射網絡驅動器完成,約1秒鐘
 
WScript.Sleep 1000
 
'第三部分:映射並重命名網絡驅動器 
 
 
'  映射過程    映射路徑         映射盤符名     新的映射名稱
Private Function NetworkDrivesName(NetworkPath, DrivesName, NewNetworkName) 
    Set objNetwork = CreateObject("Wscript.Network")
    Set objShell = CreateObject("Shell.Application")
    Set colDrives = objNetwork.EnumNetworkDrives
 
    '映射網絡驅動器
    objNetwork.MapNetworkDrive DrivesName, NetworkPath
 
    '重新命名       
    objShell.NameSpace(DrivesName).Self.Name = NewNetworkName
 
End Function
 
NetworkDrivesName "\\server\CorpFS","z:","公司文件夾"
NetworkDrivesName "\\Server\Contoso","y:","Test文件夾"
 
備註:
 
非常感謝Hack38反饋,該角本於2010年9月2日更正並更新日誌。(紅色字體爲日誌更新的內容)
非常感謝Hack38反饋,2010年9月3日,日志更新。(藍色字體爲日誌更新的內容)
 
問題的原因:
在“第一部分刪除所有映射網絡驅動器”這個循環還沒有執行完成的時候,執行了“第二部分(現第三部分)映射並重命名網絡驅動器”,導致角本執行異常。
解決方案:
在角本中添加了“第二部分:等待第一部分刪除所有映射網絡驅動器完成”,利用 WScript 對象中的 Sleep 方法,將角本執行掛起,等待1秒鐘,確保“第一部分”執行完成後,再繼續執行“第三部分”。
備註:可以根據公司具體情況調整 WScript.Sleep 參數。例如將參數修改爲:WScript.Sleep 10000,將角本掛起等待10秒鐘。
備用解決方案:
可以將這個角本分爲兩個,“第一部分”爲關機角本,“第三部分”爲開機角本。
 
 
  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章