Share via


嗨,Scripting Guy!

Hey,Scripting Guy!

歡迎使用全新的 TechNet 專欄,Microsoft Scripting Guy 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

今天的問題:我要如何判斷我的使用者在他們的電腦上是否擁有某些檔案?


我要如何判斷我的使用者在他們的電腦上是否擁有某些檔案?

嗨,Scripting Guy!是否有可能對電腦搜尋使用者不該擁有的 .MP3 或其他檔案?

-- AK

AK,您好。又一次輪到 WMI 出面救援了。使用 CIM_DataFile 類別就可以輕易地對電腦搜尋特定的檔案類型。要知道您的使用者是否藏有任何 .MP3 檔案?您只需要使用類似以下的指令碼:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mp3'")
For Each objFile in colFiles
    Wscript.Echo objFile.Name 
Next

如您所見,這是相當標準的 WMI 指令碼:我們只要搜尋 CIM_DataFile 類別中具有 MP3 副檔名的所有例項 (請注意,您不必包含句點;您應該使用 MP3 而不是 .MP3)。這是一個簡短的指令碼,而且執行得相當快速:在 2.39 GHz、具有 512 MB RAM 和 30 GB 硬碟空間的膝上型電腦,我們在少於 30 秒的時間即可得到所有 .MP3 檔案的清單。

甚至,也可以用單一查詢來搜尋一種以上的檔案類型。例如,以下指令碼搜尋 .WMA 檔和 .MP3 檔:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mp3' OR Extension = 'wma'")
For Each objFile in colFiles
    Wscript.Echo objFile.Name 
Next

不過這可不是最棒的技巧。假設這些檔案是您的使用者所不容許擁有的。我們猜想這表示您可能想將這些檔案從他們的電腦上移除。之前的指令碼無法辦到這點;它只會回報電腦上發現的所有 .MP3 和 .WMA 檔案的名稱。您依然需要連絡每名使用者,並要求對方刪除這些不當的檔案。這對您來說是相當大量的工作,然後您還需要仰賴使用者刪除這些檔案 (還要希望在此程序中,他們不會意外地刪除其他檔案)。所以為何不讓指令碼為您省掉這些麻煩?此版本的指令碼不僅可找出電腦上的所有 .MP3 和 .WMA 檔案,還會在發現檔案時予以刪除:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mp3' OR Extension = 'wma'")
For Each objFile in colFiles
   objFile.Delete 
Next

而且請記得,在遠端電腦上使用這個指令碼,就跟在本機電腦使用它一樣快速簡易。只要將變數 strComputer 的值變更為遠端電腦的名稱,就能立即進行。


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首