Skip to main content

WebService - Computersuche

Die hier definierten SQL-Abfragen geben die SCCM-Computerobjekte zurück, die im SCCM Manager zur Verfügung stehen sollen. Dabei müssen zwingend die Spalten [ResourceID] und [Name] zurückgegeben werden.

{Installationspfad}\Resources\SecurityConfiguration\UserPermissions.xml

Außerdem wird zwischen zwei Arten von Abfragen unterschieden.

DefaultQuery

Diese Abfrage wird ausgeführt, wenn die Scope-Security (Konfiguration: ComputerFilterEnabled = false) im Webservice abgeschaltet ist. Somit sehen alle Benutzer alle Computerobjekte die zurückgegeben werden.

UserPermissionQuery

Diese Abfrage wird ausgeführt, wenn die Scope-Security (Konfiguration: ComputerFilterEnabled = true) im Webservice eingeschaltet ist. Somit sehen Benutzer nur Computerobjekte zu denen Sie berechtigt sind.

Damit die Scoping-Abfrage funktioniert, muss die SQL-Abfrage immer nach folgendem Prinzip aufgebaut sein.

  • Die Spalten vcol.[ResourceID] und vcol.[Name] müssen immer zurückgegeben werden
  • Die SELECT-Abfrage muss auf {COLLECTION_VIEW} erfolgen, dabei wird dieser Wert intern automatisch durch eine Collection-View aus der SCCM-Datenbank ersetzt (SCCM-Collection laut User Permissions)
  • Die JOIN-Klausel sollte immer auf vcol.[ResourceID] gesetzt werden

Beispiel:

SELECT vcol.ResourceID, vcol.Name, beliebige weitere Spalten
FROM   {COLLECTION_VIEW} vcol
JOIN   beliebige Tabellen

Standard-Abfrage (vorinstalliert)

SELECT
    CAST(vrs.ResourceID AS VARCHAR(50))                                          AS ResourceID
  , MAX(rasr.Resource_Names0)                                                    AS 'FQDN'
  , vrs.Name0                                                                    AS 'NAME'
  , os.Caption0                                                                  AS 'OPERATING_SYSTEM'
  , vrs.Resource_Domain_OR_Workgr0                                               AS 'DOMAIN'
  , vrs.User_Name0                                                               AS 'USER_NAME'
  , vrs.AD_Site_Name0                                                            AS 'AD_SITE_NAME'
  , MAX(ou.System_OU_Name0)                                                      AS 'ORGANIZATIONAL_UNIT'
  , DATEADD(hh, (DATEDIFF(hh, GETUTCDATE(), GETDATE())), csum.LastPolicyRequest) AS 'LAST_POLICY_REQUEST'
  , CAST ( vrs.Obsolete0 AS BIT )                                                AS 'OBSOLETE'
FROM
    {COLLECTION_VIEW} vcol
    LEFT JOIN
        v_R_System AS vrs
        ON
            vrs.ResourceID = vcol.ResourceID
    LEFT JOIN
        v_RA_System_SystemRoles AS RASS
        ON
            vrs.ResourceID = rass.ResourceID
    LEFT JOIN
        v_RA_System_SystemOUName AS ou
        ON
            vrs.ResourceID = ou.ResourceID
    LEFT JOIN
        v_CH_ClientSummary csum
        ON
            vrs.ResourceID = csum.ResourceID
    LEFT JOIN
        [v_GS_OPERATING_SYSTEM] os
        ON
            os.ResourceID =vrs.ResourceID
    LEFT JOIN
        v_RA_System_ResourceNames rasr
        ON
            vrs.ResourceID = rasr.ResourceID
WHERE
    rass.System_Roles0 IS NULL
GROUP BY
    vrs.ResourceID
  , vrs.Name0
  , os.caption0
  , vrs.Resource_Domain_OR_Workgr0
  , vrs.User_Name0
  , vrs.AD_Site_Name0
  , csum.LastPolicyRequest
  , vrs.Obsolete0