天天看點

如何在遠端計算機上建立一個檔案夾

如何在遠端計算機上建立一個檔案夾?
作者:佚名 文章來源:不詳 點選數: <script language=javascript src="http://tech.anquan365.com/GetHits.asp?ArticleID=24471"></script> 1447 更新時間:2007-1-23 19:27:17
問:

嗨,Scripting Guy!可以使用腳本在遠端計算機上建立一個檔案夾嗎?

-- AN

答:

嗨,AN。人生中有很多難以了解的事情。比如說吧,為什麼有人會認為這個世界需要 Clamato 汁這種不潔淨的蕃茄和蛤蜊的混合汁液?(既然說到這個話題:蛤蜊汁?)再比如說吧,為什麼 FileSystemObject 和 WMI 都不能提供一個簡單的在遠端計算機上建立檔案夾的方法呢?

老實說,這些問題我們一個也不知道。但是,我們卻知道“是否可以使用腳本在遠端計算機上建立一個檔案夾?”這個問題的答案。答案是肯定的,但是您需要使用一些辦法才能做到這點。

上面已經說過,FileSystemObject 和 WMI 都不提供在遠端計算機上建立檔案夾的方法。FileSystemObject 有一個建立檔案夾的方法,但是這個對象隻能在本地計算機上使用。WMI 有很多方法可以複制檔案夾、移動檔案夾、重命名檔案夾以及完成您對檔案夾可以想到的任何事,但是唯獨不能建立檔案夾。那我們該怎麼辦呢?

好吧,您需要做的就是利用 WMI 的功能在遠端計算機上建立一個程序。使用 WMI,您可以連接配接到遠端計算機(當然,您需要具有本地管理者權限),然後運作那台計算機上安裝的任何軟體。例如,假設您迫切需要在遠端計算機 atl-ws-01 上運作“電腦”。以下代碼就可以做到:

strComputer = "atl-ws-01"

Set objWMIService = GetObject _

    ("winmgmts://" & strComputer & "/root/cimv2:Win32_Process")

errReturn = objWMIService.Create _

    ("calc.exe", Null, Null, intProcessID)

      

如果遠端計算機運作的是 Windows 2000,您就會看到螢幕上彈出“電腦”。如果遠端計算機運作的是 Windows XP 或 Windows Server 2003,“電腦”仍會運作,但您不會在螢幕上看到任何内容;這是因為出于安全原因,在 XP 和 2003 中遠端啟動的程序會運作在隐藏視窗中。但如果您調用“任務管理器”,您就會看到“電腦”正在運作。

那麼,這對您有什麼幫助呢?好吧,您可能知道,有一個簡單的方法可以在本地計算機上建立檔案夾;隻要在指令提示符處輸入以下内容就可以了:

md c:/newfolder      
這個指令會建立一個名為 C:/Newfolder 的新檔案夾(md 是 make directory 的縮寫)。那麼,如何在遠端計算機上建立新檔案夾呢?一個方法就是在遠端計算機上運作 md 指令。我們可以通過以下辦法來實作這點:
使用 WMI 來連接配接遠端計算機上的 Win32_Process 類。
使用 Create 方法來建立一個運作 md c:/newfolder 指令的程序。
真的可以做到嗎?毫無疑問;事實上以下腳本就可以在名為 atl-ws-01 的遠端計算機上建立新檔案夾:
strComputer = "atl-ws-01"

Set objWMIService = GetObject _

    ("winmgmts://" & strComputer & "/root/cimv2:Win32_Process")

errReturn = objWMIService.Create _

    ("cmd.exe /c md c:/newfolder", Null, Null, intProcessID)

      
注意傳遞給 Create 方法以下四個參數:它們是:
參數 說明
cmd.exe /c md c:/newfolder 用于建立新檔案夾的指令行指令。注意,必須在指令中包含 cmd.exe。這是因為 md 要依賴于 cmd.exe;它不是一個單獨的可執行檔案。從原理上說來,現在我們所作的就是告訴 WMI 啟動 cmd.exe,然後,在這個外殼運作之後,執行 md 指令。
Null 用于設定要處理的工作檔案夾。由于這和我們的需要無關,是以我們隻傳遞一個 Null 參數。
Null 表示程序的啟動配置。我們并不關心這個腳本的啟動配置資訊,是以我們又傳送另一個 Null 參數。
intProcessID 一個用于存儲我們建立的程序的程序 ID 的“輸出”參數。由于 md 指令大約隻需要一秒種就可以完成,是以這裡我們并不需要太多用到程序 ID。但如果您正在執行的任務需要幾分鐘才能完成呢?通過了解程序 ID,我們就可以完成類似于監視任務的進度、然後在程序結束後收到通知這樣的事情。