Powershell и SCCM - невозможно выполнить запрос INNER JOIN с помощью CIM (ошибка __GENERIC CLASS)

В настоящее время я работаю над модулем Powershell, чтобы помочь своему коллеге и мне "более беззаботно" работать с SCCM и сценариями (поскольку командлеты SCCM слишком медленные и поэтому непригодны для использования).

В этом модуле я создал функцию Get-CMCollectionsAndFolder, которая извлекает всю коллекцию из SCCM (используя класс SMS_Collection). Я также попытался добавить в этот список FolderName и ContainerNodeID этих коллекций, как указано в классе SMS_ObjectContainerItem.

Все мои запросы к модулю выполняются с использованием CIM, но по какой-то странной причине я не могу заставить приведенный ниже запрос JOIN работать с CIM, только с WMI.

Итак, если я запустите это:

Get-WmiObject -ComputerName $computername -Namespace root\sms\site_$sitecode -Query "SELECT SMS_Collection.*,SMS_ObjectContainerNode.ContainerNodeId,SMS_ObjectContainerNode.Name FROM SMS_ObjectContainerItem  INNER JOIN SMS_Collection ON SMS_Collection.SiteID = SMS_ObjectContainerItem.InstanceKey INNER JOIN SMS_ObjectContainerNode ON SMS_ObjectContainerNode.ContainerNodeID = SMS_ObjectContainerItem.ContainerNodeID"

Я получаю массив объектов, содержащий свойства thoses:

TypeName : System.Management.ManagementObject#root\sms\site_IP3\__GENERIC

Name                    MemberType    Definition                                                                                   
----                    ----------    ----------                                                                                   
PSComputerName          AliasProperty PSComputerName = __SERVER                                                                    
SMS_Collection          Property      System.Management.ManagementObject#SMS_Collection SMS_Collection {get;set;}                  
SMS_ObjectContainerNode Property      System.Management.ManagementObject#SMS_ObjectContainerNode SMS_ObjectContainerNode {get;set;}
__CLASS                 Property      string __CLASS {get;set;}                                                                    
__DERIVATION            Property      string[] __DERIVATION {get;set;}                                                             
__DYNASTY               Property      string __DYNASTY {get;set;}                                                                  
__GENUS                 Property      int __GENUS {get;set;}                                                                       
__NAMESPACE             Property      string __NAMESPACE {get;set;}                                                                
__PATH                  Property      string __PATH {get;set;}                                                                     
__PROPERTY_COUNT        Property      int __PROPERTY_COUNT {get;set;}                                                              
__RELPATH               Property      string __RELPATH {get;set;}                                                                  
__SERVER                Property      string __SERVER {get;set;}                                                                   
__SUPERCLASS            Property      string __SUPERCLASS {get;set;}                                                               
ConvertFromDateTime     ScriptMethod  System.Object ConvertFromDateTime();                                                         
ConvertToDateTime       ScriptMethod  System.Object ConvertToDateTime();

Затем мне нужно только "развернуть" свойства SMS_Collection и SMS_ObjectContainerNode, чтобы получить мою информацию, что не так уж и плохо.

Но когда я пытаюсь выполнить тот же запрос и заменяю Get-WMIObject на Get-CIMInstance, я получаю эту ошибку:

Get-CIMInstance : The WS-Management service cannot process the request. The class __GENERIC does not exist in the
root/sms/site_SMS namespace.
At line:1 char:1
+ Get-CIMInstance -ComputerName $computername -Namespace root\sms\site_ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Get-CimInstance], CimException
    + FullyQualifiedErrorId : HRESULT 0x80338000,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand

Я предполагаю, что есть что-то очевидное, что мне не хватает, но я явно не вижу. Может кто-нибудь дать мне решение и / или причину такого поведения? Я новичок в WMI и CIM, работаю только с теми за последние 3 недели, так что мне еще есть чему поучиться.

Спасибо!

0 ответов

Другие вопросы по тегам