MMS 2011–Config Manager 2012 Deployment and Infrastructure Technical Overview

Main reason for Secondary Sites

    • Manage upward flowing WAN traffic
    • Tiered secondary sites for deep network topologies
  • When do you need a DP?
  • When DON’T you need a DP
    • when BITS provides enough control for WAN
    • Brachcache is enabled
  • Only one type of DP.  No more BDP’s!
    • DP’s include Multicast and PXE options
    • Schedule throttling
    • IIS is required on all DP’s
    • can manually copy the content to DP’s
  • Forest Discovery (NEW)
    • Disocover domains, sites and subnets
    • new discovery process:  AD Forest Discovery
    • subnets and / or AD Sites are assigned to a Boundary Group.  The clients are assinged to boundary groups.
    • can assing DP’s to subnets and / or AD Sites (kind of like a protected system)
  • Why do you need a Central Administration Site
    • If there is more than one Primary site
    • If you want to offload administration and reporting from the Primary site
  • How data gets replicated
    • Content – software packages, updates, boot images
      • Replication Type – File based to primary, secondary and / or distribtuion points
    • Site Data – collection members, HINV, alerts, etc
      • Replcaiton type – SQL
    • Global Data – collection rules, package metadatea, software updates metadata
      • Repliation type – SQL
  • No more SMS_DEF.MOF (you can still import MOF files though)
    • You can select the default WMI Classes to inventory as well as select collection specific WMI Classes
    • You can add WMI classes from ANY WMI Namespace!
  • Security rights are now inheirited.  It’s about time!

MMS 2011–Configuration Manger 2012 Technical Overview

User Centric

  • Used to manage a user on a device.  Now it is a state based design, for aps, deployment and content. 
  • Full application lifecycle mode.  Install revisions, supersecdence and uninstall
  • build a relationship between user systems
  • application model
    • required applications – reinstall if missing
    • prohibited application – uninstall if detected
    • requirement rules – evaluated at install
    • dependencies  – relationship with other apps
    • supersedence
    • revision management
  • Web based ‘software catalog’
    • my business hours – used to control when to install software
    • presentation mode – do not install or notify while presenting
    • remote control – users can control their experience
  • Applications
    • will have both install and uninstall methods
    • Can now have custom return codes!
  • Role based administration
    • class rights = security roles
    • instance permissions = security scopes
    • site specific resource permissions = collection limiting
  • What’s new in collections
    • Device collections
    • User collections
    • can not mix the above into one collection
    • reduce complexity of collection rules.  Exclude and include rules. 
    • Folders!!!!
    • Um…no more sub collections.
  • Replication between sites will be done using SQL Replication.  File based replication will be reserved for Distribution objects (mostly)
  • Why do I need a SCCM 2012 Primary Site
    • More than 100,000 clients
    • politics!
    • local point of connectivity for administration (though, the Central Administration Site should be used instead)
  • No more branch DP’s!!!  DP’s can be installed on clients and servers now!
    • Also, have the ability to deploy content to a DP group.  Well, that’s not new.  OK, how about brining up a new DP and you want it to have the same content as other DP’s in a group.  Just add it to the group!

MMS 2011–SCCM State of the Union

The Past Year

  • Config Mgr 2007 R3
    • Supports 300,000 machines
    • Delta discovery for AD
    • Power Management
  • Asset Intelligence
    • over 20k new titles each month
  • Forefront Endpoint Protection
  • Security Compliance Manager (SCM)
    • Version 2.0 = RTM May 2011
    • Golden master – snapshot and import GPO’s
    • monitor drift and compliance
    • Uses DCM as its core
  • Opalis is now System Center Orchestrator
    • Orchestration and automation tool
    • workflows
    • integration with all System Center products and 30 3rd party apps
      • Integration in Config Manager includes 12 built-in actions
  • Citrix XenApp integration with Config Manager
  • Adobe support

The Upcoming Year

  • Beta 2 for Config Manager 2012
    • SUM – Auto deployment of updates on schedule
    • Power Management – exclude virtual machines, all end-user to “opt out”
    • Collections – new include/exclude rules, organizational folders (HOLY COW!) incremental evaluation
  • Role Based Administration
  • You can now run two SCCM consoles at once with different credentials
  • Hey, guess what?  CTRL-ALT-DEL is back!
    • The remote keyboard and mouse can now be locked
  • Global Search – search throughout the entire SCCM console!
    • can get information and edit straight from Global Search
  • New feature in Beta 2 has a ‘supersede ’ option for applications
  • New monitoring tool allows for a Site Hierarchy map.  You can even have a map of the world and show where the servers are!
  • Video on how Microsoft rolled out Config Manager 2012 clients http://technet.microsfot.com/en-us/systemcenter/gg696074
  • Go to http://connect.microsoft.com for how-to-videos. 
    • They should be on TechNet as well.
  • New DCM packs
    • SQL Server 2008 R2
    • Exchange e2010
    • SharePoint 2007
    • Server 2008 R2 IIS, DHCP, TS
    • RTM – May 2011
  • Install shield and AdminStudio will have full integration 90 Post RTM Config Manager 2012
  • SCCM 2012 console uses the RIBBON.  WHO, WHO DOESN’T WANT TO WEAR THE RIBBON?
  • Package conversion manager
    • Converts packages to the SCCM 2012 model
    • CTP available to TAP customers
    • Beta in 2nd quarter CY 2011
  • ConfigMgr 2012 SDK Beta – Q2 2011
  • Powershell support coming…..keep waiting…wait for it….
  • SCUP 2011 – more better.
  • Config Manger 2012 will support and mange UNIX and Linux servers.
    • will not be available until “some month”  after SCCM 2012 RTM

Advertising a 64 bit Powershell script

Did you know that you can not use Advertisements to run a 64 bit Powershell script?

Example:

  • You create a package with no source files
  • You create a PowerShell script and place it in a location on the target computers.  Let’s say C:\PleaseRun\PowershellScript.ps1
  • You create a program that Starts In “C:\WINDOWS\system32\windowspowershell\v1.0” and the command line “powershell.exe -file C:\PleaseRun\PowershellScript.ps1”
  • You advertise the above and notice that when the advertisement runs you see Powershell32.exe in the task manager

At this point you are pulling your hair out and wondering if you are WINNING DUH, or losing.  Well, you are losing.  But don’t fear because there is a solution.

Create a TASK SEQUENCE!

  • Run a command line
  • Command line would read (if using the above example) C:\WINDOWS\system32\windowspowershell\v1.0″ and the command line “powershell.exe -file C:\PleaseRun\PowershellScript.ps1
  • Start in:  %windir%\System32\WindowsPowerShell\v1.0\
  • DISABLE 64-BIT FILE SYSTEM REDIRECTION

As my good friend Lu would say “viola”  (however, she really means is voila)

You are now WINNING DUH!  Good job.

SCCM Computer Startup Script–Part 3

This is part two in a three part post regarding SCCM Computer Startup Scripts and SCCM Health.

Part 1- The script itself

Part 2 – The .MOF file additions

Part 3 – The SQL query for reporting

SQL Query for reporting

Once the MOF files are edited to include the attributes from the registry that the SCCM startup script wrote, it is now time to create a SQL view that you can use for reporting. 

This post is going to be pretty straightforward and will not include information on creating custom SCCM reports. 

The attached SQL script should be run on your SCCM Database.  If you want to create a SCCM report based on the new SQL view, you will need to modify the view’s security.

SQL Script

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE view [dbo].[v_SCCM_Health_Check] as

select distinct a.name0 as ‘MachineName’
, a.itemkey
, a.operating_system_name_and0 as ‘OperatingSystem’
, os.CSDVersion0 as ‘OS_ServicePack’
, a.client0 as ‘SCCM_Client’
, a.Client_Version0 as ‘SCCM_ClientVersion’
, case when a.User_Name0 like ‘%\%’ then substring(a.User_Name0,charindex(‘\’,a.User_Name0)+ 1,charindex(‘\’,a.User_Name0))
    else a.User_Name0 end AS ‘LastLoggedOnUser’
, case when scud.TopConsoleUser0 like ‘%\%’ then substring(scud.TopConsoleUser0,charindex(‘\’,scud.TopConsoleUser0)+ 1,charindex(‘\’,scud.TopConsoleUser0))
    else scud.TopConsoleUser0 end as ‘MainUser’
, nlp.FullName0 as ‘MainUserFullName’
, a.AD_Site_Name0 as ‘AD_Site’
, ou.OU
, a.Resource_Domain_OR_Workgr0 as ‘Domain’
, f.SCCM_AssignedSite00 as ‘SCCM_Health_Check_Assigned_Site’
, f.HS_SCCM_AssignedSite00 as ‘SCCM_Health_Check_Assigned_Site_History’
, e.SiteCode as ‘SCCM_Site_Code’
, f.SCCM_Install00 as ‘SCCM_install_count’
, f.CCM_Client_Check00 as ‘SCCM Client Check’
, b.LastHWScan as ‘SCCM_LastHWscan’
, c.LastUpdateDate as ‘SCCM_LastSWscan’
, Dateadd(hour,(datediff(hour,getutcdate(),getdate())),d.lastscantime) as ‘Last_WSUSscan’
, scan.StateName ‘WSUSscan_State’
, scan.ErrorStatusID
, scan.ErrorCode
, scan.HexErrorCode
, uagent.version00 ‘WSUS_AgentVersion’
, d.lastlocation as ‘WSUSserver’
, f.last_run00 as ‘SCCM_Health_Check_Last_Run’
, f.Scan_Run00 as ‘SCCM_Health_Check_run_count’
, f.Account_Check00 as ‘SCCM_in_Admin_group’
, f.HS_Account_Check00 as ‘SCCM_in_Admin_group_History’
, f.AdminShare_Check00 as ‘Admin_share_present’
, f.HS_AdminShare_Check00 as ‘Admin_share_present_History’
, f.SCCM_AutoAssignment00 as ‘SCCM_Client_assignment’
, f.HS_SCCM_AutoAssignment00 as ‘SCCM_Client_assignment_History’
, f.CCM_Service_Check00 as ‘SCCM_Service_Check’
, f.HS_CCM_Service_Check00 as ‘SCCM_Service_Check_History’
, CCMService.State0 as ‘SMS_Agent_Host_Service’
, f.WindowsUpdate_Service_Che0 as ‘SCCM_Windows_Update_Service_Check’
, f.HS_WindowsUpdate_Service_0 as ‘SCCM_Windows_Update_Service_Check_History’
, AutoUpdates.State0 as ‘Auto_Updates_Service’
from SMS_CEN.dbo.System_DISC a
left join SMS_CEN.dbo.WorkstationStatus_DATA b
on a.itemkey = b.machineid 
left join SMS_CEN.dbo.SoftwareInventoryStatus c
on a.itemkey = c.clientid 
left join SMS_CEN.dbo.Update_ScanStatus d
on a.itemkey = d.machineid
left join SMS_CEN.dbo.Windows_Update_Agent__DATA uagent
on a.itemkey = uagent.machineid
left join SMS_CEN.dbo.Sites_DATA e 
on a.itemkey = e.machineid 
left join dbo.SCCM_Health_Check_DATA f
on a.itemkey = f.machineid
left join dbo.Operating_System_DATA os
on a.itemkey = os.machineid 
left join
(
select uss.ResourceID, SN.StateName, uss.LastStatusMessageID&0x0000FFFF as ErrorStatusID,
    isnull(uss.LastErrorCode,0) as ErrorCode,
    dbo.fnConvertBinaryToHexString(convert(VARBINARY(8), isnull(uss.LastErrorCode,0))) as HexErrorCode
from v_UpdateScanStatus uss
    join v_R_System rsys on rsys.ResourceID = uss.ResourceID and isnull(rsys.Obsolete0,0)<>1
    join v_SoftwareUpdateSource sus on uss.UpdateSource_ID = sus.UpdateSource_ID
    join v_RA_System_SMSAssignedSites sass on uss.ResourceID = sass.ResourceID
    join v_StateNames sn on sn.TopicType = 501 and
        sn.StateID = (case when (isnull(uss.LastScanState, 0)=0 and Left(isnull(rsys.Client_Version0, ‘4.0’), 1)<‘4’) then 7 else isnull(uss.LastScanState, 0) end)
where 1= 1
    –and (sass.SMS_Assigned_Sites0= ‘P01’)
    –and (sn.StateName=’Scan failed’)
    and (sus.UpdateSource_UniqueID = ‘{BE893E98-BD57-4E80-93F6-5D38B61C6069}’)
) scan
on a.itemkey = scan.ResourceID 
left JOIN dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP SCUD
on a.itemkey = scud.resourceID
left join dbo.v_GS_NETWORK_LOGIN_PROFILE nlp
on nlp.name0 = scud.TopConsoleUser0 and nlp.resourceID = scud.resourceid
left join
    (
    select machineid, State0
    from     dbo.Services_DATA
    where name0 = ‘ccmexec’
    ) CCMService
on a.itemkey = CCMService.machineid
left join
    (
    select machineid, State0
    from     dbo.Services_DATA
    where name0 = ‘wuauserv’
    ) AutoUpdates
on a.itemkey = AutoUpdates.machineid
left join
    (
    select itemKey, max(system_ou_name0) as ‘OU’
    from dbo.System_System_OU_Name_ARR
    group by itemkey
    ) OU
on a.itemkey = ou.itemkey
where 1 = 1

SCCM Computer Startup Script–Part 2

 

This is part two in a three part post regarding SCCM Computer Startup Scripts and SCCM Health.

Part 1- The script itself

Part 2 – The .MOF file additions

Part 3 – The SQL query for reporting

SCCM MOF additions

Editing the SMS_DEF.MOF file isn’t too terribly hard to do.  In fact, Sherry Kissinger has many posts regarding this topic on http://myitforum.com 

However, editing the SMS_DEF.MOF to include registry keys is a bit more difficult.  In fact, if you don’t edit the SMS_DEF.MOF file correctly, you will break the Hardware Inventory Agent.  (Meaning, that once the bad .MOF file is compiled by the machine, the Hardware Inventory Agent SCCM Client Action will not be available!)

Also, you need to consider 64 bit systems along with 32 bit systems. 

Have no fear though, Sherry Kissinger has pulled through once again!  There is a tool created by Mark Cochrane that automates the editing of the SMS_DEF.MOF and Configuration.MOF files.  http://myitforum.com/cs2/blogs/skissinger/archive/2009/04/13/mark-cochrane-s-regkeytomof.aspx

Download the tool here:  http://myitforum.com/cs2/files/folders/proddocs/entry152945.aspx

Finally, here are the updates to the two files that you will need if you want to report on the status of the SCCM Health Check Script.

SMS_DEF.MOF

// RegKeyToMOF by Mark Cochrane (thanks to Skissinger, Steverac & Jonas Hettich)
// this section tells the inventory agent what to report to the server
// 1/19/2011 13:32:08

#pragma namespace (“\\\\.\\root\\cimv2\\SMS”)
#pragma deleteclass(“SCCM_Health_Check”, NOFAIL)
[SMS_Report(TRUE),SMS_Group_Name(“SCCM_Health_Check”),SMS_Class_ID(“CUSTOM|SCCM_Health_Check|1.0”),
SMS_Context_1(“__ProviderArchitecture=32|uint32”),
SMS_Context_2(“__RequiredArchitecture=true|boolean”)]
Class SCCM_Health_Check: SMS_Class_Template
{
[SMS_Report(TRUE),key] string KeyName;
[SMS_Report(TRUE)] String Scan_Run;
[SMS_Report(TRUE)] String Last_Run;
[SMS_Report(TRUE)] String CCM_Service_Check;
[SMS_Report(TRUE)] String SCCM_AssignedSite;
[SMS_Report(TRUE)] String SCCM_AutoAssignment;
[SMS_Report(TRUE)] String AdminShare_Check;
[SMS_Report(TRUE)] String Account_Check;
[SMS_Report(TRUE)] String WindowsUpdate_Service_Check;
[SMS_Report(TRUE)] String HS_CCM_Service_Check;
[SMS_Report(TRUE)] String HS_AdminShare_Check;
[SMS_Report(TRUE)] String HS_Account_Check;
[SMS_Report(TRUE)] String HS_WindowsUpdate_Service_Check;
[SMS_Report(TRUE)] String HS_SCCM_AssignedSite;
[SMS_Report(TRUE)] String HS_SCCM_AutoAssignment;
[SMS_Report(TRUE)] String CCM_Client_Check;
[SMS_Report(TRUE)] String SCCM_Install;
};

#pragma namespace (“\\\\.\\root\\cimv2\\SMS”)
#pragma deleteclass(“SCCM_Health_Check_64”, NOFAIL)
[SMS_Report(TRUE),SMS_Group_Name(“SCCM_Health_Check”),SMS_Class_ID(“CUSTOM|SCCM_Health_Check|1.0”),
SMS_Context_1(“__ProviderArchitecture=64|uint32”),
SMS_Context_2(“__RequiredArchitecture=true|boolean”)]
Class SCCM_Health_Check_64 : SMS_Class_Template
{
[SMS_Report(TRUE),key] string KeyName;
[SMS_Report(TRUE)] String Scan_Run;
[SMS_Report(TRUE)] String Last_Run;
[SMS_Report(TRUE)] String CCM_Service_Check;
[SMS_Report(TRUE)] String SCCM_AssignedSite;
[SMS_Report(TRUE)] String SCCM_AutoAssignment;
[SMS_Report(TRUE)] String AdminShare_Check;
[SMS_Report(TRUE)] String Account_Check;
[SMS_Report(TRUE)] String WindowsUpdate_Service_Check;
[SMS_Report(TRUE)] String HS_CCM_Service_Check;
[SMS_Report(TRUE)] String HS_AdminShare_Check;
[SMS_Report(TRUE)] String HS_Account_Check;
[SMS_Report(TRUE)] String HS_WindowsUpdate_Service_Check;
[SMS_Report(TRUE)] String HS_SCCM_AssignedSite;
[SMS_Report(TRUE)] String HS_SCCM_AutoAssignment;
[SMS_Report(TRUE)] String CCM_Client_Check;
[SMS_Report(TRUE)] String SCCM_Install;
};

Configuration.mof

// RegKeyToMOF by Mark Cochrane (thanks to Skissinger, Steverac & Jonas Hettich)
// this section tells the inventory agent what to collect
// 1/19/2011 13:32:08

#pragma namespace (“\\\\.\\root\\cimv2”)
#pragma deleteclass(“SCCM_Health_Check”, NOFAIL)
[DYNPROPS]
Class SCCM_Health_Check
{
[key] string KeyName;
String Scan_Run;
String Last_Run;
String CCM_Service_Check;
String SCCM_AssignedSite;
String SCCM_AutoAssignment;
String AdminShare_Check;
String Account_Check;
String WindowsUpdate_Service_Check;
String HS_CCM_Service_Check;
String HS_AdminShare_Check;
String HS_Account_Check;
String HS_WindowsUpdate_Service_Check;
String HS_SCCM_AssignedSite;
String HS_SCCM_AutoAssignment;
String CCM_Client_Check;
String SCCM_Install;
};

[DYNPROPS]
Instance of SCCM_Health_Check
{
KeyName=”RegKeyToMOF_32″;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|Scan_Run”),Dynamic,Provider(“RegPropProv”)] Scan_Run;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|Last_Run”),Dynamic,Provider(“RegPropProv”)] Last_Run;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|CCM_Service_Check”),Dynamic,Provider(“RegPropProv”)] CCM_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|SCCM_AssignedSite”),Dynamic,Provider(“RegPropProv”)] SCCM_AssignedSite;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|SCCM_AutoAssignment”),Dynamic,Provider(“RegPropProv”)] SCCM_AutoAssignment;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|AdminShare_Check”),Dynamic,Provider(“RegPropProv”)] AdminShare_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|Account_Check”),Dynamic,Provider(“RegPropProv”)] Account_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|WindowsUpdate_Service_Check”),Dynamic,Provider(“RegPropProv”)] WindowsUpdate_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_CCM_Service_Check”),Dynamic,Provider(“RegPropProv”)] HS_CCM_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_AdminShare_Check”),Dynamic,Provider(“RegPropProv”)] HS_AdminShare_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_Account_Check”),Dynamic,Provider(“RegPropProv”)] HS_Account_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_WindowsUpdate_Service_Check”),Dynamic,Provider(“RegPropProv”)] HS_WindowsUpdate_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_SCCM_AssignedSite”),Dynamic,Provider(“RegPropProv”)] HS_SCCM_AssignedSite;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_SCCM_AutoAssignment”),Dynamic,Provider(“RegPropProv”)] HS_SCCM_AutoAssignment;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|CCM_Client_Check”),Dynamic,Provider(“RegPropProv”)] CCM_Client_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|SCCM_Install”),Dynamic,Provider(“RegPropProv”)] SCCM_Install;
};

#pragma namespace (“\\\\.\\root\\cimv2”)
#pragma deleteclass(“SCCM_Health_Check_64”, NOFAIL)
[DYNPROPS]
Class SCCM_Health_Check_64
{
[key] string KeyName;
String Scan_Run;
String Last_Run;
String CCM_Service_Check;
String SCCM_AssignedSite;
String SCCM_AutoAssignment;
String AdminShare_Check;
String Account_Check;
String WindowsUpdate_Service_Check;
String HS_CCM_Service_Check;
String HS_AdminShare_Check;
String HS_Account_Check;
String HS_WindowsUpdate_Service_Check;
String HS_SCCM_AssignedSite;
String HS_SCCM_AutoAssignment;
String CCM_Client_Check;
String SCCM_Install;
};

[DYNPROPS]
Instance of SCCM_Health_Check_64
{
KeyName=”RegKeyToMOF_64″;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|Scan_Run”),Dynamic,Provider(“RegPropProv”)] Scan_Run;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|Last_Run”),Dynamic,Provider(“RegPropProv”)] Last_Run;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|CCM_Service_Check”),Dynamic,Provider(“RegPropProv”)] CCM_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|SCCM_AssignedSite”),Dynamic,Provider(“RegPropProv”)] SCCM_AssignedSite;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|SCCM_AutoAssignment”),Dynamic,Provider(“RegPropProv”)] SCCM_AutoAssignment;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|AdminShare_Check”),Dynamic,Provider(“RegPropProv”)] AdminShare_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|Account_Check”),Dynamic,Provider(“RegPropProv”)] Account_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|WindowsUpdate_Service_Check”),Dynamic,Provider(“RegPropProv”)] WindowsUpdate_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_CCM_Service_Check”),Dynamic,Provider(“RegPropProv”)] HS_CCM_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_AdminShare_Check”),Dynamic,Provider(“RegPropProv”)] HS_AdminShare_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_Account_Check”),Dynamic,Provider(“RegPropProv”)] HS_Account_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_WindowsUpdate_Service_Check”),Dynamic,Provider(“RegPropProv”)] HS_WindowsUpdate_Service_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_SCCM_AssignedSite”),Dynamic,Provider(“RegPropProv”)] HS_SCCM_AssignedSite;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|HS_SCCM_AutoAssignment”),Dynamic,Provider(“RegPropProv”)] HS_SCCM_AutoAssignment;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|CCM_Client_Check”),Dynamic,Provider(“RegPropProv”)] CCM_Client_Check;
[PropertyContext(“Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SCCM\\SCCM_Health_Check|SCCM_Install”),Dynamic,Provider(“RegPropProv”)] SCCM_Install;
};