I need a solution
Need some help guys..
I have converted most of our custom inventories over as they were simple re reads and the sort.. this one has me stumped though.
any help greatly appreciated
Old inventory...
'==========================================================================
' COMMENT: This script obtains all accounts and groups, along with
' listing what types those are (user or group), that are members
' any local group on the machine it is run on.
' It outputs the data to an Altiris inventory file format (.nsi).
'
'==========================================================================
strClassName = "Aex OS Local Groups"
strFileName = "C:\Program Files\Altiris\eXpress\Inventory\LocalGroups.nsi"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(strFileName, 2, True)
set filesys=CreateObject("Scripting.FileSystemObject")
If filesys.FileExists("C:\Program Files\Altiris\eXpress\Inventory\LocalGroups.bak") Then
filesys.DeleteFile "C:\Program Files\Altiris\eXpress\Inventory\LocalGroups.bak"
End If
objTextFile.WriteLine("<InventoryClasses>")
objTextFile.WriteLine(" <InventoryClass name='" + strClassName + "' manufacturer='Altiris' description='' version='' platform='Win32' mifClass='Altiris|LOCALGROUPS|1.0'>")
objTextFile.WriteLine(" <xml xmlns:s=""uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"" xmlns:dt=""uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"" xmlns:rs=""urn:schemas-microsoft-com:rowset"" xmlns:z=""#RowsetSchema"">")
objTextFile.WriteLine(" <s:Schema id=""RowsetSchema"">")
objTextFile.WriteLine(" <s:ElementType name=""row"" content=""eltOnly"" rs:updatable=""true"">")
objTextFile.WriteLine(" <s:AttributeType name=""c0"" rs:name=""GroupName"" rs:number=""1"" rs:keycolumn=""false"" mifAttrId='1'>")
objTextFile.WriteLine(" <s:datatype dt:type=""string"" dt:maxLength=""255""/>")
objTextFile.WriteLine(" </s:AttributeType>")
objTextFile.WriteLine(" <s:AttributeType name=""c1"" rs:name=""Class"" rs:number=""2"" rs:keycolumn=""false"" mifAttrId='2'>")
objTextFile.WriteLine(" <s:datatype dt:type=""string"" dt:maxLength=""255""/>")
objTextFile.WriteLine(" </s:AttributeType>")
objTextFile.WriteLine(" <s:AttributeType name=""c2"" rs:name=""Domain"" rs:number=""3"" rs:keycolumn=""false"" mifAttrId='3'>")
objTextFile.WriteLine(" <s:datatype dt:type=""string"" dt:maxLength=""255""/>")
objTextFile.WriteLine(" </s:AttributeType>")
objTextFile.WriteLine(" <s:AttributeType name=""c3"" rs:name=""Account"" rs:number=""4"" rs:keycolumn=""false"" mifAttrId='4'>")
objTextFile.WriteLine(" <s:datatype dt:type=""string"" dt:maxLength=""255""/>")
objTextFile.WriteLine(" </s:AttributeType>")
objTextFile.WriteLine(" </s:ElementType>")
objTextFile.WriteLine(" </s:Schema>")
objTextFile.WriteLine(" <rs:data>")
strComputer = "."
Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set Groups = wmi.ExecQuery("Select * from Win32_Group Where LocalAccount = True")
For Each group in Groups
Set colGroups = GetObject("WinNT://" & strComputer & "/" & group.Name)
For Each objUser In colGroups.Members
sUserName = objUser.Name
sUserType = objUser.Class
sDomain = Mid(objUser.AdsPath, 9)
If InStr(1, sDomain, "/") > 0 then
sDomain = Mid(sDomain, 1, InStr(1, sDomain, "/")-1)
End If
strOut = "<z:row c0='" & ToXMLString(group.Name)& "'"
strOut = strOut & " c1='" & ToXMLString(sUserType)& "'"
strOut = strOut & " c2='" & ToXMLString(sDomain)& "'"
strOut = strOut & " c3='" & ToXMLString(sUserName)& "'/>"
objTextFile.WriteLine(strOut)
Next
Next
Function ToXMLString (strInput)
Dim strOutput
If (isNull(strInput)) Then
ToXMLString = strInput
Else
strOutput = Replace(strInput, "&", "&")
strOutput = Replace(strOutput, """", """)
strOutput = Replace(strOutput, "<", "<")
strOutput = Replace(strOutput, ">", ">")
ToXMLString = Replace(strOutput, "'", "'")
End If
End Function
objTextFile.WriteLine(" </rs:data>")
objTextFile.WriteLine(" </xml>")
objTextFile.WriteLine(" </InventoryClass>")
objTextFile.WriteLine("</InventoryClasses>")
objTextFile.close