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