計算機軟體的 WMI 工作會取得資訊,例如Microsoft Windows Installer (MSI) 和軟體版本所安裝的軟體。 如需其他範例,請參閱techNet ScriptCenter at https://www.microsoft.com/technet。
本主題中顯示的腳本範例只會從本機計算機取得數據。 如需如何使用文稿從遠端電腦取得資料的詳細資訊,請參閱 遠端電腦上連線到 WMI。
下列程式描述如何執行腳本。
執行腳本
- 複製程序代碼,並將它儲存在擴展名為 .vbs 的檔案中,例如 filename.vbs。 請確定文字編輯器不會將 .txt 擴展名新增至檔案。
- 開啟命令提示字元視窗,並流覽至您儲存盤案的目錄。
- 在命令提示字元中輸入 cscript filename.vbs。
- 如果您無法存取事件記錄檔,請檢查您是否正在從提高許可權的命令提示字元執行。 某些事件記錄檔,例如安全性事件記錄檔,可能會受到使用者訪問控制 (UAC) 的保護。
注意
根據預設,cscript 會在命令提示字元視窗中顯示文稿的輸出。 由於 WMI 命令稿可能會產生大量的輸出,因此您可能會想要將輸出重新導向至檔案。 在命令提示字元中輸入 cscript filename.vbs > outfile.txt,將 filename.v bs 的輸出重新導向至 outfile.txt。
注意
執行「從Win32_Product選取 *」查詢可能會導致非預期的行為。 這是因為支援Win32_Product的提供者未優化查詢。 如需詳細資訊,請參閱 知識庫文章 974524。
下表列出可用來從本機計算機取得各種數據類型的腳本範例。
| ...使用腳本卸載軟體? |
如果使用 Microsoft Windows Installer 安裝軟體,請使用 WMI 類別 Win32_Product 和 Uninstall 方法。
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
|
$colSoftware = Get-WmiObject -Class Win32_Product |Where-Object {$_.name -eq “Personnel database”}foreach ($colItem in $colSoftware)
{
$colItem.Uninstall()
}
|
|
| ...清查電腦上已安裝文本的所有軟體? |
如果使用 Microsoft Windows Installer 安裝軟體,請使用 WMI 類別 Win32_Product。
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
|
$colSoftware = Get-WmiObject -Class Win32_Productforeach ($colItem in $colSoftware)
{
"Name: " + $colItem.Name
"Version: "+ $colItem.Version
}
|
|
| ...判斷已安裝哪些版本的 Microsoft Office? |
使用 Win32_Product 類別,並檢查 Version 屬性的值。
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
|
$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