共用方式為


WMI 工作:計算機軟體

計算機軟體的 WMI 工作會取得資訊,例如 Microsoft Windows Installer (MSI) 和軟體版本所安裝的軟體。 如需其他範例,請參閱 TechNet ScriptCenter at https://www.microsoft.com/technet

本主題中顯示的腳本範例只會從本機計算機取得數據。 如需如何使用腳本從遠端電腦取得數據的詳細資訊,請參閱 連線 遠端電腦上的 WMI。

下列程式描述如何執行腳本。

執行指令碼

  1. 複製程序代碼,並將它儲存在擴展名為 .vbs 的檔案中,例如 filename.vbs。 請確定文字編輯器不會將 .txt 擴展名新增至檔案。
  2. 開啟命令提示字元視窗,並流覽至您儲存盤案的目錄。
  3. 在命令提示字元中輸入 cscript filename.vbs
  4. 如果您無法存取事件記錄檔,請檢查您是否正在從提高許可權的命令提示字元執行。 某些事件記錄檔,例如安全性事件記錄檔,可能會受到使用者 存取控制 (UAC) 的保護。

注意

根據預設,cscript 會在命令提示字元視窗中顯示文稿的輸出。 由於 WMI 命令稿可能會產生大量的輸出,因此您可能會想要將輸出重新導向至檔案。 在命令提示字元中輸入 cscript filename.vbs outfile.txt,將 filename.vbs > 腳本的輸出重新導向至 outfile.txt。

注意

執行「從Win32_Product選取 *」查詢可能會導致非預期的行為。 這是因為支援Win32_Product的提供者未優化查詢。 如需詳細資訊,請參閱 知識庫文章974524

下表列出可用來從本機計算機取得各種數據類型的腳本範例。

如何… WMI 類別或方法
...使用腳本卸載軟體? 如果使用 Microsoft Windows Installer 安裝軟體(MSI),請使用 WMI 類別Win32_Product Uninstall 方法。
VB
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
    objSoftware.Uninstall()
Next

PowerShell
$colSoftware = Get-WmiObject -Class Win32_Product |Where-Object {$_.name -eq “Personnel database”} 

foreach ($colItem in $colSoftware) { $colItem.Uninstall() }

...清查電腦上已安裝文本的所有軟體?

如果使用 Microsoft Windows Installer (MSI) 安裝軟體,請使用 WMI 類別 Win32_Product

VB
strComputer = “.”Set objWMIService = GetObject(“winmgmts:” _ & “{impersonationLevel=impersonate}!\\” _ & strComputer & “\root\cimv2”) Set colSoftware = objWMIService.ExecQuery _ (“Select * from Win32_Product”) 

For Each objSoftware in colSoftware Wscript.Echo "Name: " & objSoftware.Name Wscript.Echo "Version: " & objSoftware.Version Next

PowerShell
$colSoftware = Get-WmiObject -Class Win32_Product 

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: "+ $colItem.Version }

...判斷已安裝哪個版本的 Microsoft Office?

使用 Win32_Product 類別,並檢查 Version 屬性的值。

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery(_
    "Select * from Win32_Product " & _
    "Where IdentifyingNumber =" _
        & " '{90280409-6000-11D3-8CFE-0050048383C9}'")
For Each objItem in colSoftware
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "Version: " & objItem.Version
Next

PowerShell
$colSoftware = Get-WmiObject -Class Win32_Product |Where-Object {$_.IdentifyingNumber -eq “{90280409-6000-11D3-8CFE-0050048383C9}”} 

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: " + $colItem.Version }

腳本和應用程式的 WMI 工作

WMI C++ 應用程式範例

TechNet ScriptCenter