Получить расположение последовательности задач SCCM 2012 с помощью wmi С#

Я пытаюсь определить местоположение последовательности задач с помощью wmi, чтобы я мог получить только определенные последовательности задач, которые хранятся в определенной подпапке.

Например, в диспетчере конфигурации SCCM в разделе «Библиотека программного обеспечения> Обзор> Операционные системы> Последовательности задач» у меня есть папка с именем «LIVE», в которой находятся последовательности задач, которые я хочу запросить. У меня проблема в том, что есть также ряд других папок, содержащих последовательности задач, которые я хочу игнорировать (в разделе «Последовательности задач»).

Я могу получить все последовательности задач, используя

select * from SMS_TaskSequencePackage

но нет места ни под одним из свойств.


person BillyDay    schedule 18.04.2017    source источник


Ответы (1)


Я не умею писать на C#, но мы наверняка можем использовать запросы PowerShell и WMI для получения объектов в определенной папке.

Перед этим нам нужно сначала узнать ContainerNodeID конкретной папки. Есть много способов получить его. Например, мы используем запрос:

$node = Get-WmiObject -Namespace ROOT\SMS\SITE_pri -class sms_objectcontainernode | Where-Object {$_.name -eq "folder1"}  
$nodeID = $node.containerNodeID

Затем мы можем получить все объекты в этом узле, используя строки ниже. 20 – это тип папки последовательности задач.

$items = Get-WmiObject -Namespace root\sms\site_pri -Class sms_objectcontaineritem | Where-Object {$_.objectType -eq '20' -and $_.containerNodeID -eq $nodeID }  

Здесь мы получаем все объекты в папке Folder1. Если мы хотим получить все свойства последовательности задач в этой папке, мы можем добавить ниже:

$key = $items.instancekey
$tasksequences = Get-WmiObject -Namespace root\sms\site_pri -class sms_tasksequencepackage | Where-Object {$_.packageID -in $key}
$tasksequences

Итак, весь полный скрипт: (изменить имя папки и идентификатор сайта)

$node = Get-WmiObject -Namespace ROOT\SMS\SITE_pri -class sms_objectcontainernode | Where-Object {$_.name -eq "folder1"} 
$nodeID = $node.containerNodeID
$items = Get-WmiObject -Namespace root\sms\site_pri -Class sms_objectcontaineritem | Where-Object {$_.objectType -eq '20' -and $_.containerNodeID -eq $nodeId }
$key = $items.instancekey
$tasksequences = Get-WmiObject -Namespace root\sms\site_pri -class sms_tasksequencepackage | Where-Object {$_.packageID -in $key}
$tasksequences
person Bifeng Dong - MSFT    schedule 19.04.2017
comment
Спасибо, это помогло многим, и мне удалось настроить только те последовательности задач, которые мне нужны. Получив идентификаторы от запроса sms_objectcontainernode и sms_objectcontaineritem, я смог получить PackageIds. - person BillyDay; 19.04.2017