none
Отчет - все компьютеры без указанного файла. RRS feed

  • Вопрос

  • Коллеги, добрый день.

    Вопрос вроде простой, но никак не соображу, как это реализовать.
    В отчетах есть стандартный отчет - Software - Files - Computers With a specific file. Так вот задача сделать такой же отчет только чтобы он содержал все компьютеры без указанного файла. Или хотя бы Query, а из него постараюсь сам отчет сделать.

    Заранее благодарен.
    3 апреля 2009 г. 11:16

Ответы

  • Конечно же есть!
    -----
    select distinct
    T1.netbios_name0 as "Computer Name",
    T3.lastscandate as "Last Scan Date"
    from v_r_system as T1
    left join v_gs_lastsoftwarescan as T3
    on T1.resourceid = T3.resourceid
    where T1.netbios_name0 not in
        (
        select distinct
        T1.netbios_name0
        from v_r_system as T1
        join v_gs_softwarefile as T2
        on T1.resourceid = T2.resourceid
        where T2.filename like @variable
        )
    order by T1.netbios_name0
    -----


    MCP | scriptoholic | PowerShell | SCCM 2007 | SMS 2003
    3 апреля 2009 г. 13:45

Все ответы

  • Не проверял, но по идее должно быть:

    select SYS.Netbios_Name0, SF.FileName, SF.FileDescription, SF.FileVersion, SF.FileSize, SF.FileModifiedDate, SF.FilePath
    From v_GS_SoftwareFile SF
    join v_R_System SYS on SYS.ResourceID = SF.ResourceID
    Where SF.FileName NOT LIKE @variable
    ORDER BY SYS.Netbios_Name0
    MCP, MCTS: SCCM 2007 Alexsey Taranenco http://ITband.ru
    • Предложено в качестве ответа altaranenco 3 апреля 2009 г. 12:01
    3 апреля 2009 г. 12:01
  • Неа. Так точно работать не будет, т.к. условие проверяется к каждому файлу и если хотя бы один файл ему соответствует, то запись компа появится.
    MCP | scriptoholic | PowerShell | SCCM 2007 | SMS 2003
    3 апреля 2009 г. 12:08
  • Да, такой вариант я уже пробовал, он действительно работать не будет.
    Может есть еще варианты? :)
    3 апреля 2009 г. 12:16
  • Конечно же есть!
    -----
    select distinct
    T1.netbios_name0 as "Computer Name",
    T3.lastscandate as "Last Scan Date"
    from v_r_system as T1
    left join v_gs_lastsoftwarescan as T3
    on T1.resourceid = T3.resourceid
    where T1.netbios_name0 not in
        (
        select distinct
        T1.netbios_name0
        from v_r_system as T1
        join v_gs_softwarefile as T2
        on T1.resourceid = T2.resourceid
        where T2.filename like @variable
        )
    order by T1.netbios_name0
    -----


    MCP | scriptoholic | PowerShell | SCCM 2007 | SMS 2003
    3 апреля 2009 г. 13:45
  • С одной стороны все работает. С другой, если ввести calc.exe или regedit.exe, которые должны быть на всех компьютерах, в результатах достаточно большой набор компов. Я что-то то не так делаю? :)
    3 апреля 2009 г. 15:07
  • 1. Высказывалось мнение, что вложенные запросы не совсем корректно отрабатывают по неизвестной причине. Подтвердить пока не могу, надо более тщательно тестировать.
    2. По умолчанию при включении software inventory папка %windir% (и все вложенные) исключается из сканирования.
    MCP | scriptoholic | PowerShell | SCCM 2007 | SMS 2003
    3 апреля 2009 г. 16:00
  • Обновил мой SQL-запрос в предыдущем посте. Добавил поле Last Software Scan Date. Протестировал его у себя с именем файла iexplore.exe, который входит в состав ОС, поэтому должен быть у всех просто железно. Получил список из 180 компов, почти у всех это поле было пустым (т.е. software scan ни разу не производился), только у двух компов была дата, из них у одного список файлов вообще пустой, другой был машиной какого-то программера (судя по списку софта) и у него действительно не было IE! Так что запрос отрабатывает отлично.
    MCP | scriptoholic | PowerShell | SCCM 2007 | SMS 2003
    3 апреля 2009 г. 16:48
  • Теперь всё понятно, спасибо!
    6 апреля 2009 г. 10:01
  • А можно данный запрос дополнить выбором определеной коллекции? Если да, то как, приведите пример. Спасибо
    25 августа 2009 г. 3:53
  • select distinct
    T1.netbios_name0 as "Computer Name",
    T3.lastscandate as "Last Scan Date"
    from v_r_system as T1
    join v_gs_lastsoftwarescan as T3
    on T1.resourceid = T3.resourceid
    join v_fullcollectionmembership as T4
    on T1.resourceid = T4.resourceid
    where T4.collectionid = 'collectionid'
    and T1.netbios_name0 not in
        (
        select
        T1.netbios_name0
        from v_r_system as T1
        join v_gs_softwarefile as T2
        on T1.resourceid = T2.resourceid
        where T2.filename like 'filename'
        )
    order by T1.netbios_name0

    MCP | scriptoholic | PowerShell | SCCM 2007 | SMS 2003
    25 августа 2009 г. 9:22