I need a vb script for a custom inventory on TPM. I have a working script to geives me the results I need IF the pc has TPM activated. However, if it is set to deactivat, then the script reurns no results and in the databse I get nulls. The problem is, if I run the script against a pc that is not connected , I also get no results and nulls in db. I had posted the script on Stack Overflow and was given an IF statement to include. However, it does not post the results as 'not applicable". Hoping Symantec can see what the issue is so I can complete this. This is the working script (which does not work on a pc that does not have TPM activated:
'===================================================================================================================
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\CIMV2\Security\MicrosoftTpm")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Tpm", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
'===================================================================================================================
'Create instance of Altiris NSE component
'===================================================================================================================
'Create instance of Altiris NSE component
dim nse
set nse = WScript.CreateObject ("Altiris.AeXNSEvent")
' Set the header data of the NSE
nse.To = "{1592B913-72F3-4C36-91D2-D4EDA21D2F96}"
nse.Priority = 1
'Create Inventory data block. Here assumption is that the data class with below guid is already configured on server
dim objDCInstance
'Modify this class guid to match the one generated when you create the custom data class
set objDCInstance = nse.AddDataClass ("{fb2182e6-f2db-4c62-8d0f-190dca8723c5}")
dim objDataClass
set objDataClass = nse.AddDataBlock (objDCInstance)
For each objInfo in colItems
dim objDataRow
set objDataRow = objDataClass.AddRow
WScript.Echo objInfo.IsActivated_InitialValue
WScript.Echo objInfo.IsEnabled_InitialValue
WScript.Echo objInfo.IsOwned_InitialValue
WScript.Echo objInfo.ManufacturerId
WScript.Echo objInfo.ManufacturerVersion
WScript.Echo objInfo.ManufacturerVersionInfo
WScript.Echo objInfo.PhysicalPresenceVersionInfo
WScript.Echo objInfo.SpecVersion
objDataRow.SetField 0, objInfo.IsActivated_InitialValue
objDataRow.SetField 1, objInfo.IsEnabled_InitialValue
objDataRow.SetField 2, objInfo.IsOwned_InitialValue
objDataRow.SetField 3, objInfo.ManufacturerId
objDataRow.SetField 4, objInfo.ManufacturerVersion
objDataRow.SetField 5, objInfo.ManufacturerVersionInfo
objDataRow.SetField 6, objInfo.PhysicalPresenceVersionInfo
objDataRow.SetField 7, objInfo.SpecVersion
Next
nse.SendQueued
'===================================================================================================================
This is the script that is supposed to ouput Not applicable but doesn't:
'===================================================================================================================
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\CIMV2\Security\MicrosoftTpm")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Tpm", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
'===================================================================================================================
'Create instance of Altiris NSE component
'===================================================================================================================
'Create instance of Altiris NSE component
dim nse
set nse = WScript.CreateObject ("Altiris.AeXNSEvent")
' Set the header data of the NSE
nse.To = "{1592B913-72F3-4C36-91D2-D4EDA21D2F96}"
nse.Priority = 1
'Create Inventory data block. Here assumption is that the data class with below guid is already configured on server
dim objDCInstance
'Modify this class guid to match the one generated when you create the custom data class
set objDCInstance = nse.AddDataClass ("{fb2182e6-f2db-4c62-8d0f-190dca8723c5}")
dim objDataClass
set objDataClass = nse.AddDataBlock (objDCInstance)
dim objDataRow
If colItems.Count > 0 Then
For each objInfo in colItems
set objDataRow = objDataClass.AddRow
objDataRow.SetField 0, objInfo.IsActivated_InitialValue
objDataRow.SetField 1, objInfo.IsEnabled_InitialValue
objDataRow.SetField 2, objInfo.IsOwned_InitialValue
objDataRow.SetField 3, objInfo.ManufacturerId
objDataRow.SetField 4, objInfo.ManufacturerVersion
objDataRow.SetField 5, objInfo.ManufacturerVersionInfo
objDataRow.SetField 6, objInfo.PhysicalPresenceVersionInfo
objDataRow.SetField 7, objInfo.SpecVersion
Next
Else
Set objDataRow = objDataClass.AddRow
objDataRow.SetField 0, "Not Applicable"
objDataRow.SetField 1, "Not Applicable"
objDataRow.SetField 2, "Not Applicable"
objDataRow.SetField 3, "Not Applicable"
objDataRow.SetField 4, "Not Applicable"
objDataRow.SetField 5, "Not Applicable"
objDataRow.SetField 6, "Not Applicable"
objDataRow.SetField 7, "Not Applicable"
End If
objDataRow.SetField 0, objInfo.IsActivated_InitialValue
objDataRow.SetField 1, objInfo.IsEnabled_InitialValue
objDataRow.SetField 2, objInfo.IsOwned_InitialValue
objDataRow.SetField 3, objInfo.ManufacturerId
objDataRow.SetField 4, objInfo.ManufacturerVersion
objDataRow.SetField 5, objInfo.ManufacturerVersionInfo
objDataRow.SetField 6, objInfo.PhysicalPresenceVersionInfo
objDataRow.SetField 7, objInfo.SpecVersion
nse.SendQueued
'===================================================================================================================