将Vbscript信息输出到txt文件

时间:2014-09-23 08:31:16

标签: windows vbscript

新手问题 - 我这里有一个查找升级代码的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输出到文本文件?或者我是否需要输出其他内容才能获得我正在寻找的产品代码?

2 个答案:

答案 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文件,其中包含指定升级代码的所有产品代码。

请注意,此代码也会在之后卸载该软件。