I have been looking over this script for a couple days now and I cannot figure out what's wrong with it.
The script queries AD to get a list of machine names. Then it walks through that list dumping a report with a list of the installed software on each machine. Everything goes fine up until the point where it calls ExecQuery().
The connection gets made successfully. I can tell because the If Err <> 0 clause only gets entered when a machine is offline. I also know the call to ExecQuery() works returns no error, because Err = 0 in the debugger. The query is simply returning an object whose count = 0.
I have included the code below. Can anyone tell me why it won't work? Maybe a permissions issue?
Dim FsObject, WbemLocator, WbemConnection, WMIobject
Dim OutFile, ComputerName, SoftwareList, SoftwareItem, SoftwareItemDetail
Set WbemLocator = GetObject("WbemScripting.SWbemLocator")
Set FsObject = CreateObject("Scripting.FileSystemObject")
Set OutFile = FsObject.OpenTextFile(OutFilename, FOR_WRITING, true)
For Each ComputerName in Computers
OutFile.WriteLine "Computer Name: " & ComputerName
On Error Resume Next
Set WbemConnection = WbemLocator.ConnectServer(ComputerName, "root\cimv2", DomainAccountName, DomainAccountPassword, "MS_409",,128)
If Err <> 0 Then
OutFile.WriteLine "Computer is not online or authentication failed"
Set SoftwareList = WbemConnection.ExecQuery("SELECT * FROM Win32_Product",,48) For Each SoftwareItem in SoftwareList
OutFile.WriteLine SoftwareItem.Name Next