SQL SCCM 2012 报告 Return 本地管理员不在指定的 AD 组中
SQL SCCM 2012 Report Return Local Admins not in specified AD Group
我已经在 Internet 和 Whosebug 上搜索了一段时间,结果我迷路了。不幸的是,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 = 'Domain\GroupName'
)
正在工作的部分:
- 列出计算机上的所有本地管理员
- "Domain Admins" 的行已从结果中删除
我需要什么帮助:
- 用户属于'Domain\GroupName' 的行将从结果
中删除
我发现我所做的是错误的,因为它确实删除了用户组的行,但我希望它从报告中完全删除用户。如果您能提供任何帮助,我们将不胜感激。
所以,经过一些时间和修补,我能够通过以下方式得到我想要的东西:
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 = 'Domain\Domain Admins'
)
)
我已经在 Internet 和 Whosebug 上搜索了一段时间,结果我迷路了。不幸的是,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 = 'Domain\GroupName'
)
正在工作的部分:
- 列出计算机上的所有本地管理员
- "Domain Admins" 的行已从结果中删除
我需要什么帮助:
- 用户属于'Domain\GroupName' 的行将从结果 中删除
我发现我所做的是错误的,因为它确实删除了用户组的行,但我希望它从报告中完全删除用户。如果您能提供任何帮助,我们将不胜感激。
所以,经过一些时间和修补,我能够通过以下方式得到我想要的东西:
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 = 'Domain\Domain Admins'
)
)