2013-03-15 83 views
0

我有一個腳本,我使用的卸載應用程序顯示記錄的vbs腳本

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" _ 
    & strComputer & "\root\cimv2") 
Set colSoftware = objWMIService.ExecQuery _ 
    ("Select * from Win32_Product " _ 
     & "Where Name = 'Personnel database'") 
For Each objSoftware in colSoftware 
    Wscript.Echo "Name: " & objSoftware.Name 
    Wscript.Echo "Version: " & objSoftware.Version 
    objSoftware.Uninstall() 
Next 

的問題是,如果

  1. 已開始運行,我不知道或已完成

  2. 卸載已完成

  3. 已完成

是否有方法在日誌文件或控制檯中顯示此信息。

感謝

回答

4

Uninstall返回返回代碼0時,卸載已完成。但是,腳本記錄的內容完全取決於您。您可以將內容寫入日誌文件或事件日誌,顯示MsgBox或將文本寫入控制檯(使用cscript.exe運行時)。

前一段時間,我寫了this來簡化處理(如果你會原諒無恥的插件)。你可以這樣使用它:

'insert class code here 

Set clog = New CLogger 
clog.LogToConsole = False 
clog.LogFile = "C:\path\to\your.log" 
clog.IncludeTimestamp = True 

clog.Log "Starting" 

'... 

For Each objSoftware in colSoftware 
    clog.Log "Uninstalling " & objSoftware.Name & " (v" & objSoftware.Version & ")" 
    rc = objSoftware.Uninstall() 
    If rc = 0 Then 
    clog.Log "Uninstall complete" 
    Else 
    clog.LogError "An error occurred: " & rc 
    End If 
Next 
clog.Log "Finished" 
1

你總是可以把MSGBOX在腳本中的每個循環

MsgBox("Uninstalling " + objSoftware.Name) 

,或者你可以爲每個循環做一個簡單的在你的

Wscript.Echo "Uninstalling " + objSoftware.Name 

只需運行vbs從管理員命令提示符窗口打開

wscript uninstallfile.vbs 

這將顯示在您的命令控制檯中。

+0

嗨..假設for循環只運行一次..我需要的東西,監控卸載過程本身。例如。我運行腳本,我不知道卸載程序實際運行並完成。 – user175084 2013-03-15 18:00:47

+2

哦哈哈。你將需要比vbscript更先進的語言。您想要監視卸載的進度。您可能需要深入瞭解msi/install,並提取變量。在一些更高級的語言中,您可以劫持不可見卸載的hwnd窗口並檢索表單的變量(例如進度百分比)。對於你想要做的事情來說,這太複雜了。您還可以檢查msiexec是否正在運行,如果它們是一個名爲msiexec的進程,那麼它仍在卸載。這隻適用於msi和基於Windows的安裝。 – ApolloSoftware 2013-03-15 18:03:59