SQL SCCM 2012 报告返回不在指定 AD 组中的本地管理员



我一直在互联网和StackOverflow上寻找一段时间,并且已经到了迷失的地步。 不幸的是,SQL不是我的强项之一。 我正在尝试获取本地计算机管理员的报告。 此部分工作正常。 我需要按 AD 组(也有效)和当前未工作的 AD 组成员筛选此列表。

这是我所拥有的:

SELECT DISTINCT
  v_gs_computer_system.Name0 as 'Computer'
  ,v_GS_LocalGroupMembers0.Account0 as 'Administrator'
  ,v_GS_LocalGroupMembers0.Category0 as 'Scope'
  ,v_GS_LocalGroupMembers0.Type0 as 'Type'
  ,U.User_Name0 as 'User'
  ,G.User_Group_Name0 as 'Group'
FROM
  v_GS_LocalGroupMembers0
  INNER JOIN v_gs_computer_system ON v_GS_LocalGroupMembers0.resourceID = v_gs_computer_system.resourceID
  FULL OUTER JOIN v_R_User U on v_GS_LocalGroupMembers0.Account0 = U.User_Name0
  FULL OUTER JOIN v_RA_User_UserGroupName G ON G.ResourceID = U.ResourceID
WHERE
  v_GS_LocalGroupMembers0.Name0 = 'Administrators'
AND NOT
  (v_GS_LocalGroupMembers0.Account0 = 'Domain Admins'
   OR G.User_Group_Name0 = 'DomainGroupName'
)

工作部件:

  • 列出计算机上的所有本地管理员
  • "网域管理员"的行将从结果中移除

我需要帮助:

  • 用户是要从结果中删除的"域\组名称"成员的行

看到我正在做的事情是错误的,因为它确实删除了用户组的行,但我希望它从报告中完全删除用户。 您能提供的任何帮助将不胜感激。

因此,经过一段时间的修补,我能够通过以下方式获得我想要的东西:

SELECT DISTINCT
  v_gs_computer_system.Name0 as 'Computer',
  v_GS_LocalGroupMembers0.Account0 as 'Account Name',
  v_GS_LocalGroupMembers0.Category0 as 'Security Principle',
  v_GS_LocalGroupMembers0.Type0 as 'Scope'
FROM
  v_GS_LocalGroupMembers0 
INNER JOIN
  v_gs_computer_system ON v_GS_LocalGroupMembers0.resourceID = v_gs_computer_system.resourceID,
  v_R_User
WHERE
  v_GS_LocalGroupMembers0.Name0 = 'Administrators'
AND NOT (
  v_GS_LocalGroupMembers0.Account0 = 'Domain Admins' OR
  v_GS_LocalGroupMembers0.Account0 = 'Administrator'
)
AND (
  v_GS_LocalGroupMembers0.Account0 NOT IN (
    SELECT v_R_User.User_Name0
    FROM v_R_user 
    LEFT JOIN v_RA_User_UserGroupName ON v_R_User.ResourceID = v_RA_User_UserGroupName.ResourceID
    WHERE 
      v_RA_User_UserGroupName.User_Group_Name0 = 'DomainDomain Admins'
  )
)

最新更新