新手问题 - 我这里有一个查找升级代码的VBScript,并在此基础上查找指定升级代码的产品代码。升级代码始终相同,但产品代码在不同版本之间有所变化,这可能会使卸载软件变得麻烦。不,我自己没有制作这个剧本。
这个脚本运行得很好,但是我想把它找到的所有产品代码都输出到文本文件中。我已经在谷歌上看了几个小时,发现了一些线索,但我无法让它发挥作用。始终使用空白文本文件。
以下是代码:
strComputer = "."
Set WshShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
On Error Resume Next
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Property Where Property = 'UpgradeCode'")
For Each objSoftware in colSoftware
If objSoftware.Value = "{BCCCB25E-C6A6-4340-9018-DA0FB34AF226}" Then
strCMD = "MsiExec.exe /x " & objSoftware.ProductCode & " /qn"
objExec = WshShell.Run(strCMD,1,True)
If objExec <> 0 Then
WScript.Quit objExec
End If
End If
Next
WScript.Quit 0
如何将objSoftware.ProductCode输出到文本文件?或者我是否需要输出其他内容才能获得我正在寻找的产品代码?
答案 0 :(得分:1)
将文本写入文件的简便方法是WScript.Echo
所需信息并运行cscript x.vbs > output.txt
之类的脚本。
如果这似乎是行人,请开始研究here。
答案 1 :(得分:0)
玩弄它,谷歌搜索,我找到了一个适合我的解决方案。这将根据特定的升级代码打印出计算机上的所有产品代码。这是脚本:
strComputer = "."
Set WshShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
On Error Resume Next
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Property Where Property = 'UpgradeCode'")
For Each objSoftware in colSoftware
If objSoftware.Value = "{BCCCB25E-C6A6-4340-9018-DA0FB34AF226}" Then
Wscript.Echo objSoftware.ProductCode
strCMD = "MsiExec.exe /x " & objSoftware.ProductCode & " /qn"
objExec = WshShell.Run(strCMD,1,True)
If objExec <> 0 Then
WScript.Quit objExec
End If
End If
Next
WScript.Quit 0
在命令提示符下运行//NoLogo scriptname.vbs > log.txt
,给我一个txt文件,其中包含指定升级代码的所有产品代码。
请注意,此代码也会在之后卸载该软件。