none
Как создать коллекцию на основе отчета RRS feed

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

  • ДОброго времени суток.

    Есть софтина, которую не используют на некоторых компьютерах. Есть отчет, который это показывает. Как создать коллекцию на основании отчета чтобы с этих компьютеров эту софтину удалить?

    28 июля 2008 г. 14:20

Все ответы

  • Коллекции строятся на основе запросов, запросы строятся на основе данных из таблиц БД, а отчеты - на основе вьюшек этих таблиц, поэтому напрямую так сделать не удастся. НО! Можно посмотреть в свойствах отчета куда он обращается, создать аналогичный запрос, поменяв вью на таблицы, и сделать на его основе коллекцию.

     

    29 июля 2008 г. 5:35
  • Там этих вьюшек, мне через минут 15 надоело этот отчет строить. Пришлось качать SDK по SCCM и смотреть на PowerShell.

    В итоге получился такой скрипт (вдруг кому-то пригодится):

    Code Snippet

    function AddComputerToCollection($cmpName)

    {

    $Computer = "sccm computer"

    $Method = "AddMembershipRule"

    $collectionName = "Delete Software Collection"


    $colClass = get-wmiobject -class "SMS_Collection" -namespace "root\sms\site_A01" -computername $strComputer -filter "Name = '$collectionName'"

    $objComputer = get-wmiobject -class "SMS_R_System" -namespace "root\sms\site_A01" -computername $strComputer -filter "NetbiosName = '$cmpName'"

    $objColRuleDirect = [WmiClass]"\\$Computer\root\sms\site_A01:SMS_CollectionRuleDirect"

    $objColRuleDirect.psbase.Properties["ResourceClassName"].value = "SMS_R_System"

    $objColRuleDirect.psbase.Properties["ResourceID"].value = $objComputer.ResourceID

    $objColRuleDirect.psbase.Properties["RuleName"].value = "Direct Rule - "+$cmpName

    $InParams = $colClass.psbase.GetMethodParameters($Method)

    $InParams.collectionRule = $objColRuleDirect

    $R = $colClass.psbase.InvokeMethod($MEthod, $inParams, $Null)

    }


    $computers = get-content C:\temp\SMSReportResults.csv

    foreach ($computer in $computers) {

    AddComputerToCollection $computer

    write-Host "Name = :", $computer

    }

     

    Найти его можно будет здесь - http://www.maxx.net.ua/sccmst2.php

    Вот только пришлось экспортировать результат отчета в csv. Запустить отчет и использовать его результаты непосредственно в скрипте не получилось. Может кто-то допишет?

     

     

    31 июля 2008 г. 6:40
  • Как-то все же неэлегантненько, на мой взгляд. Smile Если уже есть имена машин в CSV - зачем какой-то скрипт, там руками это членство создать 5 секунд, а динамического наполнения коллекции по свежим результатам не будет ни в том, ни в этом случае.

    Вот если сделать что-то, что автоматически превращало бы запросы в отчеты и наоборот... *ушел думать*

     

    31 июля 2008 г. 12:04
  •  Ivan A. Budylin написано:

    Как-то все же неэлегантненько, на мой взгляд. Если уже есть имена машин в CSV - зачем какой-то скрипт, там руками это членство создать 5 секунд, а динамического наполнения коллекции по свежим результатам не будет ни в том, ни в этом случае.

    Вот если сделать что-то, что автоматически превращало бы запросы в отчеты и наоборот... *ушел думать*

    Элегантненько это вместо импорта csv запускать отчет, что я и планировал сначала сделать, но чего-то он не запускается у меня из PowerShell. Если надо будет делать это динамически, то можно через определенные интервалы времени запускать отчет, а потом этот скрипт. Но это тоже будет не совсем красиво...

     

    31 июля 2008 г. 14:46