none
В какой формат и как лучше всего конвертировать данные для последующего сохранения? RRS feed

  • Вопрос

  • В какой формат и как лучше всего конвертировать данные , полученные от скрипта (инвентаризация типа gwmi win32_bios, gwmi win32_processor и т.д.), для наполнения БД? Задача провести инвентаризацию компьютеров в организации и сохранить в БД.

    24 октября 2012 г. 12:45

Ответы

  • В какой формат и как лучше всего конвертировать данные , полученные от скрипта (инвентаризация типа gwmi win32_bios, gwmi win32_processor и т.д.), для наполнения БД? Задача провести инвентаризацию компьютеров в организации и сохранить в БД.


    CSV,XML
    • Предложено в качестве ответа Vinokurov YuriyModerator 24 октября 2012 г. 13:01
    • Помечено в качестве ответа smv0647 25 октября 2012 г. 10:43
    24 октября 2012 г. 12:52
    Отвечающий
  • При конвертации данных в CSV (convertto-csv) получаю набор бессмысленных данных. Типа "9e210fe47d09416682b841769c78b8a3"

    При конвертации данных в XML (convertto-xml) выводиться только "шапка" файла и всё. "xml                                     Objects                               
    ---                                     -------                               
    version="1.0"                           Objects "

    Что делаю не так?

    Есть бОльшое подозрение,что используется Format-Table(List),если так,то заменить на Select-Object.

    Get-WmiObject Win32_Bios | Select Name,Version | Export-CSV -NoType result.csv

    • Помечено в качестве ответа smv0647 25 октября 2012 г. 10:42
    25 октября 2012 г. 5:59
    Отвечающий
  • Тут придеться использовать для каждого WMI класса отдельный файл, т.к. все и так в куче.

    gwmi Win32_ComputerSystem | select Domain,Name, PrimaryOwnerName,@{n="TotalPhysicalMemory";e={"{0:n1}" -f($_.TotalPhysicalMemory / 1gb)}} | Export-CSV -Notype result.csv
    

    Либо создать объект со всеми полями,заполнить и уже выгрузить потом:

    $obj = "" | Select Name,Domain,PrimaryOwnerName,TotalPhysicalMemory,OSName
    $pc = gwmi Win32_ComputerSystem 
    $os = gwmi Win32_OperatingSystem 
    .......
    $obj.Name = $pc.Name
    $obj.PrimaryOwnerName = $pc.PrimaryOwnerName
    $obj.Domain = $pc.Domain
    $obj.TotalPhysicalMemory = "{0:n1}" -f ($pc.TotalPhysicalMemory / 1gb)
    $obj.OsName = $os.Name

    • Помечено в качестве ответа smv0647 25 октября 2012 г. 11:27
    25 октября 2012 г. 11:13
    Отвечающий

Все ответы

  • В какой формат и как лучше всего конвертировать данные , полученные от скрипта (инвентаризация типа gwmi win32_bios, gwmi win32_processor и т.д.), для наполнения БД? Задача провести инвентаризацию компьютеров в организации и сохранить в БД.


    CSV,XML
    • Предложено в качестве ответа Vinokurov YuriyModerator 24 октября 2012 г. 13:01
    • Помечено в качестве ответа smv0647 25 октября 2012 г. 10:43
    24 октября 2012 г. 12:52
    Отвечающий
  • При конвертации данных в CSV (convertto-csv) получаю набор бессмысленных данных. Типа "9e210fe47d09416682b841769c78b8a3"

    При конвертации данных в XML (convertto-xml) выводиться только "шапка" файла и всё. "xml                                     Objects                               
    ---                                     -------                               
    version="1.0"                           Objects "

    Что делаю не так?

    25 октября 2012 г. 5:55
  • При конвертации данных в CSV (convertto-csv) получаю набор бессмысленных данных. Типа "9e210fe47d09416682b841769c78b8a3"

    При конвертации данных в XML (convertto-xml) выводиться только "шапка" файла и всё. "xml                                     Objects                               
    ---                                     -------                               
    version="1.0"                           Objects "

    Что делаю не так?

    Есть бОльшое подозрение,что используется Format-Table(List),если так,то заменить на Select-Object.

    Get-WmiObject Win32_Bios | Select Name,Version | Export-CSV -NoType result.csv

    • Помечено в качестве ответа smv0647 25 октября 2012 г. 10:42
    25 октября 2012 г. 5:59
    Отвечающий
  • Есть бОльшое подозрение,что используется Format-Table (List)

    Да правильное подозрение, заменил, но, намного, лучше не стало:

    при *-CSV - переслали выводиться параметры используемых в скрипте классов, отображаются только параметры Name, (вид типа):

    "Intel(R) Core(TM) i5 CPU         750  @ 2.67GHz",,
    ,"SyncMaster 943N/943NX",,
    ,"Default Monitor",,
    ,"Realtek PCIe GBE Family Controller",,
    ,"D-Link DGE-528T Gigabit Ethernet Adapter"

    получается, что все, кроме первого не передают правильно данные по конвееру на Export-CSV (convertto-CSV - я тоже пробовал - ничего не получается).

    при Convertto-XML - по прежнему отображается только "шапка" ;((  И иногда пишет:

    "ConvertTo-Xml : Не удается привязать объект ввода к любым параметрам команды, т
    ак как команда не принимает входные данные конвейера, либо входные данные и их
    свойства не совпадают с любыми из параметров, принимающих входные данные конвей
    ера."

    Как правильно написать скрипт, что бы данные от каждого экз. класса правильно передавались на export-CSV / ConvertTo-CSV?


    • Изменено smv0647 25 октября 2012 г. 10:42
    25 октября 2012 г. 10:41
  • Есть бОльшое подозрение,что используется Format-Table (List)

    Да правильное подозрение, заменил, но, намного, лучше не стало:

    при *-CSV - переслали выводиться параметры используемых в скрипте классов, отображаются только параметры Name, (вид типа):

    "Intel(R) Core(TM) i5 CPU         750  @ 2.67GHz",,
    ,"SyncMaster 943N/943NX",,
    ,"Default Monitor",,
    ,"Realtek PCIe GBE Family Controller",,
    ,"D-Link DGE-528T Gigabit Ethernet Adapter"

    получается, что все, кроме первого не передают правильно данные по конвееру на Export-CSV (convertto-CSV - я тоже пробовал - ничего не получается).

    при Convertto-XML - по прежнему отображается только "шапка" ;((  И иногда пишет:

    "ConvertTo-Xml : Не удается привязать объект ввода к любым параметрам команды, т
    ак как команда не принимает входные данные конвейера, либо входные данные и их
    свойства не совпадают с любыми из параметров, принимающих входные данные конвей
    ера."

    Как правильно написать скрипт, что бы данные от каждого экз. класса правильно передавались на export-CSV / ConvertTo-CSV?



    Приведите пример Вашего скрипта.
    25 октября 2012 г. 10:44
    Отвечающий
  • powershell -command {
    #Инфо по компу
    gwmi Win32_ComputerSystem | select Domain,`
     Name, PrimaryOwnerName,`
      @{n="TotalPhysicalMemory";`
       e={"{0:n1}" -f($_.TotalPhysicalMemory / 1gb)}};
    #Инфо по ОС
    gwmi Win32_OperatingSystem | select Name;
    # инфо про BIOS
    gwmi win32_bios | select name, SMBIOSBIOSVersion, Manufacturer;
    # инфо про MB
    gwmi win32_baseboard | select Manufacturer, Product;
    # инфо про Processor
    gwmi win32_processor | select name, SocketDesignation, NumberOfCores;
    # инфо про Monitor
    gwmi win32_desktopmonitor | select Name;
    # инфо про NA
    gwmi win32_networkadapter | where {$_.PhysicalAdapter}`
     | select name, MACAddress, @{n="Speed"; e={$_.Speed/1e9}};
    # инфо про HDD
    gwmi Win32_LogicalDisk | select DeviceID,`
     @{n="FreeSpace";e={"{0:n1}" -f($_.FreeSpace / 1gb)}},`
      @{n="Size";e={"{0:n1}" -f($_.Size/1gb)}},`
    ProviderName, VolumeName} |`
     export-csv -notype > -path MyPC-data-exp-csv.csv
    25 октября 2012 г. 10:58
  • Тут придеться использовать для каждого WMI класса отдельный файл, т.к. все и так в куче.

    gwmi Win32_ComputerSystem | select Domain,Name, PrimaryOwnerName,@{n="TotalPhysicalMemory";e={"{0:n1}" -f($_.TotalPhysicalMemory / 1gb)}} | Export-CSV -Notype result.csv
    

    Либо создать объект со всеми полями,заполнить и уже выгрузить потом:

    $obj = "" | Select Name,Domain,PrimaryOwnerName,TotalPhysicalMemory,OSName
    $pc = gwmi Win32_ComputerSystem 
    $os = gwmi Win32_OperatingSystem 
    .......
    $obj.Name = $pc.Name
    $obj.PrimaryOwnerName = $pc.PrimaryOwnerName
    $obj.Domain = $pc.Domain
    $obj.TotalPhysicalMemory = "{0:n1}" -f ($pc.TotalPhysicalMemory / 1gb)
    $obj.OsName = $os.Name

    • Помечено в качестве ответа smv0647 25 октября 2012 г. 11:27
    25 октября 2012 г. 11:13
    Отвечающий
  • Ок, спасибо. Первый вариант представляется более простым, пойдём по нему...

    25 октября 2012 г. 11:29