Scripting Guy 為您解答問題
歡迎使用 TechNet 專欄,Microsoft Scripting Guy 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。
資源
如何只有在磁碟機 X 並非使用中的情況下,才對應電腦上的磁碟機 X?
嗨,Scripting Guy!如何只有在磁碟機 X 並非使用中的情況下,才對應電腦上的磁碟機 X? -- PN |
|
PN,您好。您知道嗎?有一則令人難以置信的消息 (但是,很遺憾,這是真的)。撰寫本專欄的 Scripting Guy 正忙於撰寫本專欄。因為今天剛好是 13 號星期五 ,所以您可能會想,今天的討論題目就是 13 號星期五 。 |
Non-system or disk error.
糟糕...
不論您是否相信,但是在撰寫專欄 (揭穿 13 號星期五 不吉利的假面具) 時,我們的電腦壞了。如果壞的不是我們的電腦,我們可能會認為這事還滿有趣的 (Scripting Ed itor 就覺得這還滿有趣的)。
請注意:不,我們也不相信這是因果報應。不過,我們也不會這麼斬釘截鐵,以免這真的是因果報應。在淌入因果報應的混水之前,我們今天就已經有夠多的麻煩了。 |
那麼,我們是否仍然認為這個有關 13 號星期五 不吉利的看法只是無稽之談呢?當然。畢竟,雖然 13 號星期五對於我們而言可能沒有特別吉利 (至少對我們的電腦是如此),但是其實對於 PN 而言則相當吉利:
strComputer = "."
Set objWMIService=GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_LogicalDisk Where DeviceID = 'X:'")
If colItems.Count = 0 Then
Set objNetwork = CreateObject("Wscript.Network")
objNetwork.MapNetworkDrive "X:", "\\atl-fs-01\public"
End If
如您所見,這是一小段蠻容易撰寫的指令碼 (這樣算不錯了,因為我們沒有電腦可用來撰寫指令碼)。就如同平常的做法,我們一開始要連線到本機電腦上的 WMI 服務。我們是否能在遠端電腦上執行相同的指令碼呢?或許可以。要判斷遠端電腦上的磁碟機 X 是否使用中相當簡單。但很不幸的,要對應遠端電腦上的磁碟機就有點困難了。這是因為 Windows Script Host 和 WSH Network 物件都設計成在本機執行而非遠端執行 (沒錯,名為 Network 物件的東西卻無法透過網路運作,很有趣吧)。從另一方面來講,您一定可以找到這些事情的解決方法。如需建議,請參閱之前的《 嗨,Scripting Guy! 》專欄 (英文)。
完成連線之後,我們接著要使用 ExecQuery 方法和下面這行程式碼,傳回電腦上 DeviceID 等於 X 之所有磁碟機的集合:
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_LogicalDisk Where DeviceID = 'X:'")
為什麼要這麼做?其實,這是一種快速且方便判斷磁碟機 X 是否使用中的方式。如果磁碟機 X 已經對應 (至實體磁碟機或網路磁碟機),那麼集合中就會出現一個項目。如果磁碟機 X 並非使用中 (表示我們可以使用此磁碟機代號),那麼集合中就不會出現任何項目。
知道這一點之後,下一個步驟就是檢查集合 Count,以便判斷是否有任何磁碟機 X 使用中:
If colItems.Count = 0 Then
如果 Count 等於 0,就表示磁碟機 X 可以使用。因此,我們要繼續建立 Wscript.Network 物件的執行個體,然後使用 MapNetworkDrive 方法,將資料夾 \\atl-fs-01\public 對應至磁碟機 X:
Set objNetwork = CreateObject("Wscript.Network")
objNetwork.MapNetworkDrive "X:", "\\atl-fs-01\public"
如果 Count 並非等於 0 該怎麼辦?那麼,這只代表一件事:磁碟機 X 必定已經使用中。因此,根據 PN 的需求,我們不會進行任何動作。
請注意:如果磁碟機 X 使用中,繼續將磁碟機對應至下一個可用的磁碟機代號會不會比較好?可能會。如果您想要這樣做,那麼您也很幸運:我們剛好有另一個關於磁碟機對應的專欄 (英文),這則專欄的內容會說明如何判斷電腦上的下一個可用磁碟機代號。 |
無論如何,希望這有所幫助,PN。就像我們所說的,別太擔心 13 號星期五了;Scripting Guy 不認為 13 號星期五會比任何其他星期五更糟。畢竟,只要是星期五 (不論是不是 13 號),就表示我們必須工作。這點就完全排除了今天是幸運日的可能,不論我們的電腦是否壞掉都一樣。