'****************************************************************
' Filename..: installedApps.vbs
' Author....: David M. Stein aka Scriptzilla aka dipshit
' Date......: 10/20/2011
' Purpose...: save query of installed applications to local file
'****************************************************************
Const strInputFile = "c:\regoutput.txt"
Const strOutputFile = "c:\installedApps.txt"
Const ForReading = 1
Const ForWriting = 2
Const adVarChar = 200
cmd = "reg query hklm\software\microsoft\windows\currentversion\uninstall /s >" & strInputFile
On Error Resume Next
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
wscript.echo "info: executing shell command to create temp file..."
objShell.Run "cmd /c " & cmd, 7, True
wscript.echo "info: getting temp file for input..."
If objFSO.FileExists(strInputFile) Then
wscript.echo "info: reading temp file..."
Set objFile = objFSO.OpenTextFile(strInputFile, ForReading)
Set objFile2 = objFSO.CreateTextFile(strOutputFile, True)
Set rs = CreateObject("ADODB.RecordSet")
rs.CursorLocation = adUseClient
rs.Fields.Append "productname", adVarChar, 255
rs.Open
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
If Left(strLine, 25) = " DisplayName REG_SZ" Then
strOutput = Trim(Mid(strLine, 30))
rs.AddNew
rs.Fields("productname").value = strOutput
rs.Update
End If
Loop
rs.Sort = "productname"
Do Until rs.EOF
objFile2.WriteLine(rs.Fields("productname").value)
rs.MoveNext
Loop
rs.CLose
Set rs = Nothing
objFile.Close
objFile2.Close
wscript.echo "info: finished scrubbing input to new output file"
Else
wscript.echo "fail: temp file not found"
End If
Set objFSO = Nothing
Set objShell = Nothing
'----------------------------------------------------------------
wscript.echo "info: processing complete!"
Thursday, October 20, 2011
Query Installed Apps a Different Way
For whatever reason, in some environments, a WMI query of Win32_Product is God-awful slow. I've seen this on Windows 7 and Windows 7 SP1 clients, as well as on Windows Server 2008 and 2008 R2. The symptom can be seen from WIM script, WBEM, and using WMIC from a command console with very similar results: The query hangs for 20-25 seconds and then begins executing in spurts. Other Win32 classes work fine, from what I've seen, it's just Win32_Product for some reason. One workaround is to dump a registry output file, and scrub it to make a "clean" output file. You can port this to PowerShell or KiXtart if you want (or whatever you prefer, I really don't care as long as you're happy and that makes me happy so we're all happy. yay!)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment