Sinds kort ben ik overgegaan van WSUS 2.0 SP1 naar WSUS 3.0 SP1 omdat Server 2008 niet wordt ondersteund als client in WSUS 2.0 SP1.
Ten opzichte van WSUS 2.0 SP1 zijn er dan ook behoorlijk wat dingen veranderd, zowel positief als negatief.
Hetgene waar ik echter momenteel mee zit, is de reporting mogelijkheid. De reporting in WSUS zelf heeft voor mijn wensen 2 nare eigenschappen:
1. Hij toont alle needed updates, terwijl ik alleen needed en approved updates wil zien.
2. De standaard reporting export naar excel maakt voor iedere server 2 tabbladen in een excel document aan.
Wat ik graag zou willen, is een overzicht van servers die needed en approved updates hebben en ook welke updates dit zijn met eventuele toelichting op deze updates. Een voorbeeld zou dan als volgt zijn:
Servername | MSRC Needed Update | KB# Needed update | Description needed update | Etc | Etc2 | Etc3 |
=======================================================
Server1 MS06-012 905413 Security update for ......
Server1 MS06-013 905414 Security update for ......
Server1 MS06-014 905415 Security update for ......
Server2 MS06-012 905413 Security update for ......
Momenteel heb ik onderstaande query die een soortgelijke output geeft, echter deze geeft alle needed updates weer, terwijl ik het liefst ook de needed AND approved updates zou willen zien. Tevens heb ik hierin een aantal filters ingebouwd:
Verder heb ik de volgende query (aangepast vanuit MS voorbeelden) die de servers toont die nog approved en needed updates hebben. Deze toont echter alleen de servers zonder gespecificeerd de updates die nog nodig zijn.
Ik ben zelf niet zo handig in SQL en kom er ook niet meer uit op dit moment. Hopelijk is er iemand die kan helpen om deze queries te combineren tot een enkele query.
Ten opzichte van WSUS 2.0 SP1 zijn er dan ook behoorlijk wat dingen veranderd, zowel positief als negatief.
Hetgene waar ik echter momenteel mee zit, is de reporting mogelijkheid. De reporting in WSUS zelf heeft voor mijn wensen 2 nare eigenschappen:
1. Hij toont alle needed updates, terwijl ik alleen needed en approved updates wil zien.
2. De standaard reporting export naar excel maakt voor iedere server 2 tabbladen in een excel document aan.
Wat ik graag zou willen, is een overzicht van servers die needed en approved updates hebben en ook welke updates dit zijn met eventuele toelichting op deze updates. Een voorbeeld zou dan als volgt zijn:
Servername | MSRC Needed Update | KB# Needed update | Description needed update | Etc | Etc2 | Etc3 |
=======================================================
Server1 MS06-012 905413 Security update for ......
Server1 MS06-013 905414 Security update for ......
Server1 MS06-014 905415 Security update for ......
Server2 MS06-012 905413 Security update for ......
Momenteel heb ik onderstaande query die een soortgelijke output geeft, echter deze geeft alle needed updates weer, terwijl ik het liefst ook de needed AND approved updates zou willen zien. Tevens heb ik hierin een aantal filters ingebouwd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| USE SUSDB DECLARE @CatType nvarchar(30) SELECT @CatType = 'ProductFamily' DECLARE @Language int SELECT @Language = 1033 SELECT CAT.DefaultTitle , CT.name , U.SecurityBulletin , U.KnowledgebaseArticle , U.RevisionNumber , U.MsrcSeverity , Clas.DefaultTitle , U.DefaultTitle --, U.DefaultDescription , UAIU.Url , MU.State , U.InstallationRebootBehavior , U.InstallationCanRequestUserInput , U.InstallationRequiresNetworkConnectivity , U.isWsusInfrastructureUpdate , MU.UninstallationSupported , MU.UninstallationImpact , MU.UninstallationRebootBehavior , MU.UninstallationCanRequestUserInput , MU.UninstallationRequiresNetworkConnectivity , U.UpdateId , Clas.ClassificationId FROM PUBLIC_VIEWS.vUpdate U , PUBLIC_VIEWS.vComputerTarget CT , PUBLIC_VIEWS.vCategory CAT , PUBLIC_VIEWS.vUpdateInCategory UIC , PUBLIC_VIEWS.vClassification Clas , PUBLIC_VIEWS.vUpdateInstallationInfoBasic UIIB , PUBLIC_VIEWS.vUpdateAdditionalInfoUrl UAIU , dbo.vwMinimalUpdate MU WHERE U.UpdateId = UIIB.UpdateId AND U.UpdateId = UAIU.UpdateId AND U.UpdateId = MU.UpdateId AND U.UpdateId = UIC.UpdateId AND U.RevisionNumber = MU.RevisionNumber AND UIC.CategoryId = CAT.CategoryId AND U.ClassificationId = Clas.ClassificationId -- computer status for that update is either 2 (not installed), 3 (downloaded), -- 5 (failed), or 6 (installed pending reboot), and AND UIIB.State in (2, 3, 5, 6) -- UAIU.LocaleId='1033' means language is English AND UAIU.LocaleId =@language --AND CAT.ParentCategoryId is NULL AND CAT.CategoryType=@CatType AND UIIB.ComputerTargetId = CT.ComputerTargetId --Filter on Clas.DefaultTitle AND Clas.DefaultTitle in ('Security Updates','Critical Updates') -- Filter based on security bulletin --AND U.SecurityBulletin='MS09-014' --AND U.UpdateId= '47936cd4-a9af-456e-93e6-9229bc0093df' --Filter based on product category Windows, SQL, Exchange, Office AND CAT.DefaultTitle = 'Windows' --Filter based on Servername --AND CT.Name = 'server.domain.local' |
Verder heb ik de volgende query (aangepast vanuit MS voorbeelden) die de servers toont die nog approved en needed updates hebben. Deze toont echter alleen de servers zonder gespecificeerd de updates die nog nodig zijn.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| -- Find computers within a target group that need updates -- which have been approved for install for at least N days USE SUSDB DECLARE @TargetGroup nvarchar(30) -- DECLARE @Days int SELECT @TargetGroup = 'All Computers' -- SELECT @Days = 7 -- Find all computers in the given @TargetGroup SELECT vComputerTarget.Name FROM PUBLIC_VIEWS.vComputerGroupMembership INNER JOIN PUBLIC_VIEWS.vComputerTarget on vComputerGroupMembership.ComputerTargetId = vComputerTarget.ComputerTargetId INNER JOIN PUBLIC_VIEWS.vComputerTargetGroup on vComputerGroupMembership.ComputerTargetGroupId = vComputerTargetGroup.ComputerTargetGroupId WHERE vComputerTargetGroup.Name = @TargetGroup -- And only select those for which an update is approved for install, the -- computer status for that update is either 2 (not installed), 3 (downloaded), -- 5 (failed), or 6 (installed pending reboot), and -- the update has been approved for install for at least @Days AND EXISTS ( select * from PUBLIC_VIEWS.vUpdateEffectiveApprovalPerComputer INNER JOIN PUBLIC_VIEWS.vUpdateApproval on vUpdateApproval.UpdateApprovalId = vUpdateEffectiveApprovalPerComputer.UpdateApprovalId INNER JOIN PUBLIC_VIEWS.vUpdateInstallationInfoBasic on vUpdateInstallationInfoBasic.ComputerTargetId = vComputerTarget.ComputerTargetId WHERE vUpdateEffectiveApprovalPerComputer.ComputerTargetId = vComputerTarget.ComputerTargetId AND vUpdateApproval.Action = 'Install' AND vUpdateInstallationInfoBasic.UpdateId = vUpdateApproval.UpdateId AND vUpdateInstallationInfoBasic.State in (2, 3, 5, 6) -- AND DATEDIFF (day, vUpdateApproval.CreationDate, CURRENT_TIMESTAMP) > @Days ) |
Ik ben zelf niet zo handig in SQL en kom er ook niet meer uit op dit moment. Hopelijk is er iemand die kan helpen om deze queries te combineren tot een enkele query.