Is there information that you need for your report that does not exist in the log file for the installation?
At any rate, I am making the assumption that you want to know the final state, not the requested state, of your components and features. I am doing something similar, for a different purpose. I created a VB applet, but the same kind of thing can be done in script.
Here is a bit of my code:
...
Public oAppIDList As Collection
...
Dim oSession As WindowsInstaller.Session
Dim oInstaller As WindowsInstaller.Installer
Dim oDatabase As WindowsInstaller.Database
' Initialize oAppIDList collection
Set oAppIDList = New Collection
' Initialize WindowsInstaller.Session
Set oInstaller = CreateObject("WindowsInstaller.Installer")
Set oSession = oInstaller.OpenProduct("<Product ID>")
Set oView = oSession.Database.OpenView("Select AppId from AppId")
oView.Execute
Set oRecord = oView.Fetch
Do Until oRecord Is Nothing
oAppIDList.Add oRecord.StringData(1)
Set oRecord = oView.Fetch
Loop
oView.Close
This gives me a listing of the AppID's that were installed by the product. I sequence this just before InstallFinalize so that the SessionObject returned by opening the product is the current session. At this point in the code, I have the Session object, the Installer object, and the Database object available for read access. I suspect something similar would work for your needs. Because the sequence is so late in the game, I can use files that I install with the package, and I can also rely on the fact that the objects are already registered.
As to passing command line arguments, that is not a problem if you are using VBScript. Include your script as a VBS file in your install. Include the full path to WScript.exe on the target machine as a record in the Property Table. Use a CA, base type 50, to run your script.
In the Source column of the CA table, list the property for the path to the scripting host. In the Target column, list the complete command line, just as though you were executing from a Run command.