捐血一袋救人一命

2010年7月30日 星期五

在遠端電腦上執行命令

因為限制使用者帳號權限在 User Level 時,會造成使用者無法執行磁碟重整。

而Windows系統用久之後,資料破碎就會越來越嚴重,自然就會造成系統效能低落。

我試用過幾款磁碟重組軟體,很多都無法讓使用者重組,而且就算能,我也不太想額外裝一堆軟體,希望盡量使用內建的工具,這樣也不會有版權的問題。

所以就想寫一個可以遠端執行磁碟重組的程式。

當然,它可以命令列在遠端執行磁碟重組,也可以做很多事,就看您想幹什麼囉!

以下程式碼,只要存成 .hta 檔案,點擊兩下就可以執行

image

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=big5" />
<title>Remote Execute Command</title>
<HTA:APPLICATION
     ID="objHTAHelpomatic"
     APPLICATIONNAME="HTAManagementAccount"
     SCROLL="No"
     SINGLEINSTANCE="yes"
     BORDER="thick"
     BORDERSTYLE="raised"
     MAXIMIZEBUTTON="no"
     SHOWINTASKBAR="yes"
     WINDOWSTATE="normal"
>
</head>

<SCRIPT Language="VBScript">
' Setup Window Size
Sub Window_onLoad
    Const Width = 500
    Const Height = 250
    self.ResizeTo width,height
    Self.moveTo (screen.AvailWidth-width)/2,(screen.AvailHeight-height)/2
End Sub

' Defrag Server by Shell
Sub ExecuteCmd
    strComputer = HostName.Value
    strCmd = Command.Value
    strArg = "cmd.exe /c " + strCmd
    ' strArg = strCmd
    Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
    errReturn = objWMIService.Create (strArg , Null, Null, intProcessID)
    msgbox("Finish ! " & strComputer )
    set objWMIService = Nothing
End Sub
</SCRIPT>

<body>
請選擇您的指令<br>
<select name="Command">
  <option value="gpupdate /force">Force Update Group PolicyF</option>
  <option value="wuauclt.exe /detectnow">Force Detect Update</option>
  <option value="del c:\thumbs.db /s /a">Clear Thumbs.db Files in Driver C</option>
  <option value="del d:\thumbs.db /s /a">Clear Thumbs.db Files in Driver D</option>
  <option value="cleanmgr c: /sagerun:1">Clean Manager in Driver C</option>
  <option value="cleanmgr d: /sagerun:1">Clean Manager in Driver D</option>
  <option value="defrag c: /v">Defrag System Driver</option>
  <option value="shutdown -s -t 0">Shutdown PC (Windows XP)</option>
  <option value="shutdown -r -t 0">Reboot PC (Windows XP)</option>
  <option value="shutdown /s /t 0">Shutdown PC (Windows Server 2003)</option>
  <option value="shutdown /r /t 0">Reboot PC (Windows Server 2003)</option>
</select>
<br>
<br>
您要在哪台電腦上執行指令?<br>
Host Name:<input type="text" name="HostName" size="30"><br>
<input id=runbutton  class="button" type="button" value="Execute" name="run_button"  onClick="ExecuteCmd"><br>
<br>
<ul>
<li>如果您輸入的電腦無法接受管理(例如:防火牆阻擋),將會發生錯誤訊息</li>
</ul>
</body>
</html>

如果要改成自己 Key In 命令,請參考 在遠端電腦上執行命令2

5 意見:

Unknown 提到...

大哥你好
想請教你一下,如果我想輸入多的IP,然後按一下button讓他一次執行,不曉得程式改如何寫,可以幫忙一下嗎~非常感謝

Tom 提到...

我的作法會是將IP存入檔案,做個迴圈去讀取檔案,然後將讀取到的 IP 一一代入程式指令中...

Tom 提到...

我覺得如果增加一個 Text 欄位去處理頗麻煩,而且如果是從固定格式檔案讀取 IP,就有機會和其他管理程式協同運作,達到自動化的管理。

匿名 提到...

連線之電腦要設定哪些檔案嗎?我都連不出去(防火牆已經關閉了)

Tom 提到...

基本上不需要特別設定,但是請注意一下,遠端的電腦 WMI (Windows Management Instrumentation)服務是否已啟動?