11 нояб. 2015 г.

Импорт данных из Lansweeper в Итилиум

Итилиум умеет импортировать данные в формате Everest. Да где ж их взять? Запускать Everest при входе пользователя? Можно. Но тормозит.
Альтернативный вариант - выбрать данные из SQL базы Lansweeper.
Потом - открываем полученный csv LibreOffice Calc, запускаем скрипт на OOBasic и получаем xml для загрузки в Итилиум.

Запрос:

SELECT DISTINCT tblAssets.AssetID, tblAssets.Assettype, tblAssets.AssetName, tblAssets.Memory, tblAssets.Processor, tblOperatingsystem.Caption, tblBaseBoard.Manufacturer, tblBaseBoard.Product, tblBaseBoard.SerialNumber, tblVideoController.Caption, tblVideoController.AdapterRAM, tblFloppy.Model, Format(Round(tblFloppy.Size/1000000000,0),'000G') as Diskize, tblFloppy.SerialNumber, tblFloppy.InterfaceType FROM
tblAssets INNER JOIN
tblBaseBoard ON tblAssets.AssetID = tblBaseBoard.AssetID INNER JOIN
tblVideoController ON tblAssets.AssetID = tblVideoController.AssetID INNER JOIN
tblFloppy ON tblAssets.AssetID = tblFloppy.AssetID INNER JOIN
tblOperatingsystem ON tblAssets.AssetID = tblOperatingsystem.AssetID
WHERE (tblAssets.Assettype = - 1) AND (tblFloppy.Model <> 'Virtual HD ATA Device') AND (tblFloppy.InterfaceType = N'IDE') AND (tblVideoController.Caption <> 'Mirage Driver') AND (tblVideoController.Caption <> 'Microsoft Hyper-V Video') AND (tblVideoController.AdapterRAM<>0)
ORDER BY tblAssets.AssetName


Скрипт:

Sub Main
Dim oDoc As Object, oSheet As Object, oCell As Object
Dim aFile As String
Dim iNumber As Integer
  oDoc=ThisComponent
  oSheet=oDoc.Sheets.getByName("comps")
  i=1
  while PCName <> ""
oCell=oSheet.getCellByPosition(1,i) ' PC Name
PCName=oCell.getString()
oCell=oSheet.getCellByPosition(4,i) ' OS
OS=oCell.getString()
oCell=oSheet.getCellByPosition(5,i) ' motherboard manufacturer
MbName=oCell.getString()
  oCell=oSheet.getCellByPosition(6,i) ' motherboard type
MbName=MbName+" "+oCell.getString()
  oCell=oSheet.getCellByPosition(7,i) ' motherboard serial
MbSerial=MbName+" "+oCell.getString()
  oCell=oSheet.getCellByPosition(2,i) ' memory
Memory=oCell.getString()
oCell=oSheet.getCellByPosition(3,i) ' cpu
CPU=oCell.getString()
  oCell=oSheet.getCellByPosition(8,i) ' video
Video=oCell.getString()
  oCell=oSheet.getCellByPosition(9,i) ' video memory
VideoMem=oCell.getString()    
    oCell=oSheet.getCellByPosition(10,i) ' hdd type
HDD=oCell.getString()
    oCell=oSheet.getCellByPosition(11,i) ' hdd size
HDD=HDD+" "+oCell.getString()
 
iNumber = Freefile
aFile ="c:\temp\"+PCName+".xml"
  ' Msgbox aFile & chr(13)
  Open aFile For Output As #iNumber
  Print #iNumber, "<?xml version="+chr(34)+"1.0"+chr(34)+" encoding="+chr(34)+"Windows-1251"+chr(34)+"?>"
     Print #iNumber, "<Page><Title>Суммарная информация</Title><Icon>46</Icon><MenuTitle>Компьютер</MenuTitle><MenuIcon>46</MenuIcon>"
     Print #iNumber, "<Group><Title>Компьютер</Title><Icon>46</Icon>"
     Print #iNumber, "<Item><Title>Операционная система</Title><Icon>38</Icon><ID>513</ID><Value>"+OS+"</Value></Item>"
     Print #iNumber, "<Item><Title>Имя компьютера</Title><Icon>46</Icon><ID>514</ID><Value>"+PCName+"</Value></Item>"
     Print #iNumber, "</Group>"

     Print #iNumber, "<Group><Title>Отображение</Title><Icon>6</Icon>"
     Print #iNumber, "<Item><Title>Видеоадаптер</Title><Icon>6</Icon><ID>523</ID><Value>"+Video+" "+VideoMem+"</Value></Item>"
     Print #iNumber, "</Group>"

     Print #iNumber, "<Group><Title>Системная плата</Title><Icon>42</Icon>"
Print #iNumber, "<Item><Title>Тип ЦП</Title><Icon>80</Icon><ID>517</ID><Value>"+CPU+"</Value></Item>"
Print #iNumber, "<Item><Title>Системная память</Title><Icon>50</Icon><ID>520</ID><Value>"+Memory+"Mb</Value></Item>"
Print #iNumber, "</Group>"
 
Print #iNumber, "<Group><Title>Хранение данных</Title><Icon>5</Icon>"
Print #iNumber, "<Item><Title>Дисковый накопитель</Title><Icon>5</Icon><ID>528</ID><Value>"+HDD+"</Value></Item>"
Print #iNumber, "</Group>"
        
     Print #iNumber, "</Page>"
        
     Print #iNumber, "<Page><Title>Системная плата</Title><Icon>42</Icon><MenuTitle>Системная плата</MenuTitle><MenuIcon>42</MenuIcon>"
     Print #iNumber, "<Group><Title>Свойства системной платы</Title><Icon>42</Icon>"
     Print #iNumber, "<Item><Title>ID системной платы</Title><Icon>42</Icon><Value>"+MbName+" "+MbSerial+"</Value></Item>"
     Print #iNumber, "<Item><Title>Системная память</Title><Icon>50</Icon><ID>520</ID><Value>"+Memory+"</Value></Item>"
     Print #iNumber, "</Group>"
     Print #iNumber, "</Page>"
    
     i=i+1
     Close #iNumber
  Wend

End Sub