none
Расширение sms_def.mof RRS feed

  • Общие обсуждения

  • Необходимо с помощью SMS 2003 собрать иформацию о настройках, установленных на клиентских ПК, сетевых принтеров (имеющих встроеную сетевую карту или подключенных через аппаратный принт-сервер к ЛВС), т.е. принтеров для которых тип порта - "Standard TCP/IP Port".

    Хотелось чтобы отображались:

     1. Имя порта.
     2. IP-адрес порта.
     3. Номер порта.

    Для этого в папку в конец файла  \SMS\inboxes\clifiles.src\hinv\sms_def.mof добавил следующие строки:

    // TCP/IP Printer Port Information
    //--------------------------------------------------
    [SMS_ReporT(TRUE),
    SMS_Group_Name("TCPIP Printer port"),
    SMS_Class_ID("MICROSOFT|Win32_TCPIPPrinterPort|1.0") ]

    class Win32_TCPIPPrinterPort :SMS_Class_Template
    {
          [SMS_Report(TRUE)     ]
             string Name;
          [SMS_Report(TRUE)     ]
             string HostAddress;
          [SMS_Report(TRUE)     ]
             string PortNumber;
         
    };

    В результате SMS 2003 собирает данные только об именах портов. Где все остальные данные? Что я сделал не так? Помогите, пожалуйста!

    6 декабря 2006 г. 11:04

Все ответы

  • PortNumber - должен быть uint32

    Что на клиенте в журнале InventoryAgent.log? Что показывается на клиенте при просмотре класса Win32_TCPIPPrinterPort через wbemtest?

    7 декабря 2006 г. 10:27
    Отвечающий
  • 1. Тип для PortNumber исправил. Спасибо. Буду ждать результата.

    2. InventoryAgent.log содержит следующую информацию:

    <![LOG[Collection: Namespace = \\.\root\cimv2; Query = SELECT __CLASS, __PATH, __RELPATH, HostAddress, Name, PortNumber FROM Win32_TCPIPPrinterPort; Timeout = 600 secs.]LOG]!><time="08:46:53.890+-180" date="11-27-2006" component="InventoryAgent" context="" type="1" thread="212" file="collectiontask.cpp:330">

    3. Что такое wbemtest, к сожалению, не знаю, но простейший vbs-скрипт выполняемый на клиентах выдает всю нужную информацию:
    --------TCPIPPrinterPorts.vbs-----------
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colPorts =  objWMIService.ExecQuery _
        ("Select * from Win32_TCPIPPrinterPort")

    For Each objPort in colPorts
        Wscript.Echo "Host Address: " & objPort.HostAddress
        Wscript.Echo "Name: " & objPort.Name
        Wscript.Echo "Port Number: " & objPort.PortNumber
    Next

    -----------OutPut---------------
    Host Address: 192.168.0.252
    Name: V3-P1
    Port Number: 515
    ------------------------------------

     

    8 декабря 2006 г. 5:47
  • К сожалению, изменение типа данных параметра PortNumber ничего не дало.

    Какие-нибудь еще идеи есть? Может кроме расширения файла sms_def.mof нужно произвести еще какие-нибудь операции? 

    11 декабря 2006 г. 8:45
  • [SMS_Report(TRUE),
    SMS_Group_Name("TCPIP Printer port"),
    SMS_Class_ID("MICROSOFT|Win32_TCPIPPrinterPort|1.0") ]

    class Win32_TCPIPPrinterPort :SMS_Class_Template
    {
          [SMS_Report(TRUE),key]
             string Name;
          [SMS_Report(TRUE)     ]
             string HostAddress;
          [SMS_Report(TRUE)     ]
             uint32 PortNumber;
         
    };

    у меня таже песня, только одно поле Name.

    12 декабря 2006 г. 22:20
  • Запустите на клиенте утилиту wbemtest. Просто набирите данную команду в CMD

    Нажмите кнопку Connect, Ничего не меняя в появившемся окне нажмите Connect

    Нажмите кнопку Query И введите в окне запрос

    SELECT __CLASS, __PATH, __RELPATH, HostAddress, Name, PortNumber FROM Win32_TCPIPPrinterPort

    Что выводится?

    Если вы не создавали вручную TCPIP port, то никаких данных и не будет. Но очень странно что выводится только Name.

    Вы не пробовали посмотреть в SQL таблице, что туда занесено?

    18 декабря 2006 г. 12:44
    Отвечающий
  • Вы правы, результат точно такой же как и у SMS 2003: Win32_TCPIPPrinterPort.Name="V3-P1".

    Но почему же тогда vbs-скрипт с тем же запросом на той же машине выдает все сведения?:

    ---Zapros.vbs--
    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
     Set colItems = objWMIService.ExecQuery("SELECT __CLASS, __PATH, __RELPATH, HostAddress, Name, PortNumber FROM Win32_TCPIPPrinterPort" )

       For Each objItem In colItems
          WScript.Echo "HostAddress: " & objItem.HostAddress
          WScript.Echo "PortNumber: " & objItem.PortNumber
          WScript.Echo "Name: " & objItem.Name
          WScript.Echo
       Next

    ---Результат---
    HostAddress: 192.168.0.252
    PortNumber: 515
    Name: V3-P1
    ---

    И главный вопрос - "Что делать?". Что значит "создавали вручную TCPIP port"?

    В таблицу смотрел - из информационных заполнено только поле с именем (и то подозреваю только из-за того, что имя порта указывается в свойствах принтера, т.е другого WMI-класса - штатно опрашиваемого SMS).

    18 декабря 2006 г. 13:34
  • доброго времени суток

    есть у кого нить опыт заставить смс читать реестр через sms_def.mof

    есть необходимость считать ключ реестра и занести его в базу SMS

    спасибо

    Евгеений

     

    14 января 2007 г. 9:50
  • Вот здесь лежит дока как работать с реестром к SMS 2.0, но для 2003 все это тоже подходит. В доке есть примеры - рабочие.

    http://www.microsoft.com/smserver/techinfo/administration/20/using/extenddefmof.mspx

     

    23 марта 2007 г. 9:47