将tbscript信息输出到txt文件
问题描述:
新手问题 - 我在这里有一个查找升级代码的VBScript,并在此基础上查找指定升级代码的产品代码。升级代码始终相同,但产品代码从版本更改为版本,这可能会使卸载软件变得麻烦。不,我自己并没有制作这个剧本。将tbscript信息输出到txt文件
此脚本工作得很好,但我想让它将所有找到的产品代码输出到文本文件。我在Google上看了好几个小时,发现了一些线索,但是我一直无法使它工作。总是出现一个空白的文本文件。
下面的代码:
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到一个文本文件?或者我需要输出其他东西来获取我正在查找的产品代码?
答
玩过它,谷歌搜索它,我找到了一个适合我的解决方案。这将基于特定的升级代码在计算机上打印出所有的产品代码。这里的脚本:
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文件。
请注意此代码之后也会卸载软件。
感谢您的回答。这是我尝试的第一件事情之一。但是,它似乎并不奏效。我可能做错了。 我将此代码添加到代码中:'WScript.Echo objSoftware.ProductCode'就在我的代码中的strCMD命令的下方,但除了标准的“Microsoft(R)Windows Script blablabla”之外,output.txt中没有任何输出。 任何想法可以改变回声? objSoftware.ProductCode是我的第一个猜测,但没有运气。 – ShadowSF96 2014-09-23 09:31:52
我发布了一个答案,我让它工作。谢谢你的帮助。我不知道为什么它以前没有工作,但它现在起作用。也许是一个错字,我不知道,但我发布的代码适合我。 – ShadowSF96 2014-09-23 11:15:31