The SCCM Client Center Public Version 2.0.2 is published on: http://sourceforge.net/projects/smsclictr/
Changes:
- AppV Plugin updated
- CustomCMD is now part of Plugin.Default.dll
- Kill running process feature added
- Fixed: Execution History Issue (Remote Registry)
- Additional "adhoc" inventory can now be configured in smsclictrv2.exe.config
- MSInfo32 feature implemented (Request: 2800161)
- Override Service Window feature added (per Advertisement)
- New Form to create and define Maintenance Windows start-time and duration added
- … and some more …
Some Client Center links:
- minor updates and System Center Update Publisher (SCUP) 4.5 catalog: http://smsclictr.sourceforge.net/update/
- click once setup: http://smsclictr.sourceforge.net/
- smsclictr.automation library documentation: http://smsclictr.sourceforge.net/smsclictr.automation/
An updated Version of the WMI Provider "Monitor Details" is available for download (contains some bug fixes).
This WMI Provider does create a WMI Class (root\cimv2:Win32_MonitoDetails) to list the Model, MonitorID, PnPID and Serial Number of all attached monitors.
Microsoft .NET Framework 3.5 SP1 is required.
Version 1.1.1.11 of the SMSCliCtr.automation library does include new functions to create a Data Discovery Record (DDR) File from .NET (no access to SMSRsGen.dll required).
Example (C#):
DDRFile oDDRFile = new DDRFile("System", "CustomDiscovery", "C00");
oDDRFile.DDRAddString("Name", "MyComputer", 64,
DDRFile.DDRPropertyFlagsEnum.ADDPROP_KEY |
DDRFile.DDRPropertyFlagsEnum.ADDPROP_NAME);
oDDRFile.DDRWrite("c:\file.ddr");
The complete source-code (GPL License) can be found in the SVN Repository of the SCCM Client Center Project.
(The following content was provided by Richard Braitsch)
If you try to determine the Lenovo computer model in SCCM2007 you will see that Lenovo publishes its 7 digit model number in the "model" attribute instead of the clear text model name you would expect. Eg. instead of "ThinkCentre M58p" you will see "6234A1G". This is not incorrect, but quite cryptic for common daily needs and would require a translation table to associate this number with the corresponding model name.
But there is a simple way of querying the clear text model name in WMI.
Lenovo has tucked it away in the "version" property. Here you see the instance of Win32_ComputerSystemProduct as shown in WBEMTEST:

The following vb-script will deliver the information you are looking for:
' Query Lenovo computer model string
Option Explicit
Dim strComputer, strVendor, strModel ' As String Dim objWMIService, colItems, objItem ' As Object Dim Counter ' As Integer
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM
Win32_ComputerSystemProduct")
Counter = 0
For Each objItem in colItems
If Counter = 0 Then
strVendor = objItem.Vendor
strModel = objItem.Version
End If
Counter = Counter + 1
Next
Wscript.Echo(strVendor & " " & strModel)
Set objWMIService = NOTHING
Set colItems = NOTHING
A nice feature of SCCM is the ability to inject MassStorage drivers on Windows XP installations.
The Problem is that the Storage Drivers will not be detected automatically with Plug&Play, so you have the specify which driver has to be loaded... 
But there is an option to simulate Plug&Play... by defining WMI conditions based on the Plug&Play ID:


The Target machine will go through each action and applies only StorageDrivers for existing hardware devices...
Attached an example of such a Task-Sequence section for some Intel drivers:
MassStorageDrivers.zip
Thanks to Richard Braitsch for enumerating all the Device ID's ... 
Within the SCCM SDK, the enumeration DDRPropertyFlagsEnum is documented, but the list is not complete.
enum DDRPropertyFlagsEnum
{
ADDPROP_NONE = 0x0,
ADDPROP_REPLACE = 0x1,
ADDPROP_GUID = 0x00000002,
ADDPROP_GROUPING = 0x00000004,
ADDPROP_KEY = 0x00000008,
ADDPROP_ARRAY = 0x00000010,
ADDPROP_AGENT = 0x00000020,
ADDPROP_NAME = 0x00000044,
ADDPROP_NAME2 = 0x00000084
};There is an additional value (I named it ADDPROP_REPLACE) with a value = 0x1
that defines that any existing values in the DB will be replaced with the
new value(s).
This is an important Flag if you want to cleanup or update array values...
"SCCM Client Center" Version 2.0.1 can be downloaded from :http://sourceforge.net/projects/smsclictr
or as update from: http://smsclictr.sourceforge.net/update/
"SMS Collection Commander" Version 1.3.2 can be downloaded from: http://sourceforge.net/projects/smscollctr/
or as update from: http://smscollctr.sourceforge.net/update/
A SCUP (System Center Update Publisher) Catalog is available at: http://smsclictr.sourceforge.net/update/WinWorkers.cab
A special thanks to Mattias Benninge who has created a Plugin to offer RemoteAssistance from SCCM Client Center.
The Plugin can be downloaded from : http://smsclictr.sourceforge.net/Plugin_OfferAssistance.dll and must be copied to "%commonprogramfiles%\SMSCliCtr\Tools\".
Al list of all predefined SMS/SCCM Exit-Code:
Success:
0
Reboot:
1604
1641
3010
3011
Retry*:
4
5
8
13
14
39
51
53
54
55
59
64
65
67
70
71
85
86
87
112
128
170
267
999
1003
1203
1219
1220
1222
1231
1232
1238
1265
1311
1323
1326
1330
1618
1622
2250
*) A retry exit code will force SMS/SCCM to rerun the advertisement after a timeout of 10 minutes.
It seems that PreInst.exe does have an issue with SMS Permissions assigned to security groups....
PreInst.exe /DelSite does generate the following error message, if your account does get the permission on the class "Site" over a security group:
"<SiteCode> is not a known Site"
Grant your account at leaset "read" permission to the class "Site"... wait a while... and run PreInst.exe /Delsite again.... surprise, the site could be deleted....
I've seen this Issue on:
- SCCM2007 RTM
- SCCM2007 SP1
Out of the Box the Despooler does use three concurrent threads. There may be some situations where the despooler will get overloaded and the backlog of files in the despooler directory is growing...
To increase the concurrent threads, stop the SMS_DESPOOLER component by using the "ConfigMgr Service Manager".
Change the Reg Key:
HKLM\Software\Microsoft\SMS\Components\SMS_DESPOOLER\Despooling Thread Limit = 6 (to increase the concurrent threads to 6).
Start the SMS_DESPOOLER component and monitor the despool.log.
The new public version of collection commander can be downloaded from: https://sourceforge.net/projects/smscollctr/
Changes:
- OOB Discovery feature added
- Intel AMT features added
- SCCM Policy Import for Native Mode Clients
- WakeOnLan issues fixed
- SMSCliCtrV2 integration
- ...
additional requirements:
The new version requires read access to the following SQL view: "v_GS_NETWORK_ADAPTER_CONFIGUR"
Download and Install from:
<http://smscollctr.sourceforge.net/>
Changes:
- WakeOnLan broadcast address issue fixed (calculates the broadcast address from inventory data)
- SQL Lookup customizable to add additional Rows
- SMSCliCtrv2.exe support
- Requires read access to the SQL view v_GS_NETWORK_ADAPTER_CONFIGUR
On a SCCM 2007 Sp1 testenvironment running on Windows Server 2008 (IIS 7), I had an Issue where SCCM was unable to create the virtual directory on IIS for a BITS enabled DP..
The Error in Distmgr.log:
..
CWmi::GetObject(): GetObject() failed. - 0x80041013 SMS_DISTRIBUTION_MANAGER 18.11.2008 22:00:31 5508 (0x1584)
ERROR CreateVirtualDirectory: Failed to update virtual directory SMS_DP_SMSPKGE$. error = IDispatch error #3603 SMS_DISTRIBUTION_MANAGER 18.11.2008 22:00:32 5508 (0x1584)
STATMSG: ID=2344 SEV=E LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=SCCM SITE=CS0 PID=692 TID=5508 GMTDATE=Tue Nov 18 21:00:32.007 2008 ISTR0="["Display=\\SCCM\"]MSWNET:["SMS_SITE=CS0"]\\SCCM\" ISTR1="" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=404 AVAL0="["Display=\\SCCM\"]MSWNET:["SMS_SITE=CS0"]\\SCCM\" SMS_DISTRIBUTION_MANAGER 18.11.2008 22:00:32 5508 (0x1584)
ERROR CheckDPforDrizzle: Could not find the desired DP ["Display=\\SCCM\"]MSWNET:["SMS_SITE=CS0"]\\SCCM\ in the SCF SMS_DISTRIBUTION_MANAGER 18.11.2008 22:00:32 5508 (0x1584)
Cannot set the current Drizzle Role status for the DP. SMS_DISTRIBUTION_MANAGER 18.11.2008 22:00:32 5508 (0x1584)
Error occurred. SMS_DISTRIBUTION_MANAGER 18.11.2008 22:00:32 5508 (0x1584)
...
The Reason was: The "IIS 6 WMI Compatibility" Role was not installed on IIS7...

Installing the missing part and restarting the server has fixed the Issue....
The first public beta of SCCM Client Center V2.0 is online at: http://smsclictr.sourceforge.net/smsclictrv2/
This beta version is for testing only and should not be used in a productive environment.
Feature-Requests and Issues should be reported on the smsclictrv2 Tracker (a Sourceforge Account is required !).
Happy testing.. 
Download and Install from:
<http://smscollctr.sourceforge.net/>
Changes:
- Query AMT* Power state feature added
- AMT* PowerON feature added
- some minor changes
*) Intel® Active Management Technology
The Offermgr on a SMS2003 Primary site may take hours on startup until running productive, because it does create or verify all the offer files for SMS2003 legacy Clients.
If there are no SMS2003 legacy clients within your environment, there is an option in the SiteControl file to disable legacy support which prevents offermgr to create these legacy offer files.
To disable legacy support:
- Make sure you have a backup.
- Stop all SMS Services for the site.
- Make a backup of the sitectrl.ct0 from sms\inboxes\sitectrl.ct0 file
- Use text editor on sitectrl.ct0
- Find "Create CAP Instructions" string, this will be in the SMS_OFFER_MANAGER section of the site control file.
- Change "PROPERTY <Create CAP Instructions><><><1>"to "PROPERTY <Create CAP Instructions><><><0>" to disable the work to support std clients
- Save the file and restart services, check offer manager log, the lines about creating private copies, inserting tables, flushing offer info cache etc should be omitted and the offer manager startup should be much faster.
Read the full conversation:
http://www.myitforum.com/forums/Resolved_%21%21_Help%21_Offermgr_5%255hrs_to_%22initialize%22_before_replicating_adverts/m_183511/tm.htm
I will implement this tweak into the "SMS Site Settings Tweak" Utility (http://sourceforge.net/projects/smssettings/)
Some details about the new Version of "SMS Client Center" (SMSCliCtrV2)...
some major changes:
- GUI redesigned
- SMS/SCCM components management shows version and status (site setting or local policy)
- Cache management improved (show cached packages, list orphaned packages. etc. )
- Show Advertisement Schedule (next run time, recurring state etc. )
- Execution History resolves Package-Name automatically from Advertisement (if available)
- Show AddRemovePrograms from remote Client and allow remove or repair of MSI packages
- Monitor and manage processes of a remote client
- ...
Planned features/plugins:
- AMT PowerOn/OFF/Reset
- AMT (partial) unprovisioning
-...
Next steps:
- Source Code is available at http://smsclictr.svn.sourceforge.net/viewvc/smsclictr/SMSCliCtrV2/
- A public beta should be available as a ClickOnce setup within the next two Weeks
- A Bug- and Feature-request tracking page will be available for registered Sourceforge users as soon as the beta is online...
- I'm looking forward to have a final version ready until December 08 (there is still a lot of work to do....)
some Screenshots:
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_AddRemPrograms.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_Advertisements.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_AgentActions.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_Cache.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_Components.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_ExecHistory.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_Process.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_Schedules.JPG
http://myitforum.com/cs2/blogs/rzander/smsclictrv2_Services.JPG
If you are trying to update the "SMS_SiteControlDaySchedule" on an SMS/SCCM Address from a script, but the attribute "HourUsage" will not be saved... then you have to be aware to set the attribute "Update" to "True" on each changed "SMS_SiteControlDaySchedule" Object.... otherwise the changes will not be saved...
Thanks to Rob Marshall for the Great article about the "Component Status Summarizer" Issue on SCCM2007 RTM/SP1... I was one of the 0.1% [:'(]...
Read the Article:
http://myitforum.com/cs2/blogs/robm/archive/2008/08/28/configmgr-2007-rtm-sp1-component-status-summarizer-acting-like-a-dead-duck.aspx
Creating a WMIProvider in C# using the WMI Provider Extension from .NET Framework 3.5 is not a big thing and it requires only a few additional lines of code.
A lot of SMS/SCCM administrators do have the requirement to inventory the members of the local administrators group, that’s why I will do an example for this scenario, but it can be easy adapted to report whatever you want….
First at all: If you do not have .NET 3.5 SP1, you should first register the “System.Management.Instrumentation.dll” as described in How to: Fix Provider Load Failure Error.
1. Create a new Class Library Project in VS2008 and verify the project is using the .NET Framework 3.5.
2. Add the “System.Management.Instrumentation” namespace to the references and to the using directives:
using System.Management.Instrumentation;
3. Above the Namespace keyword, you have to declare the WMI Namespace which should contain our new dynamic WMI Class:
[assembly: WmiConfiguration(@"root\cimv2", HostingModel = ManagementHostingModel.LocalService)]
In our case, the provider must be able to enumerate all local administrators, that’s why I'm using the “Local Service” security context.
4. You have to tag the C# Class to provide WMI informations and you have to specify the WMI Class Name:
[ManagementEntity(Name = "Win32_LocalAdmins")]
The complete code looks now like this:
using System;
using System.Collections.Generic;
using System.Text;
using System.Management.Instrumentation;
[assembly: WmiConfiguration(@"root\cimv2", HostingModel = ManagementHostingModel.LocalService)]
namespace ClassLibrary1
{
[ManagementEntity(Name = "Win32_LocalAdmins")]
public class Class1
{
}
}
5. Now, you have to declare the attributes of our “Win32_LocalAdmins” WMI Class. Let’s create three Attributes: the Name of the local admin group members, the Type (User or Group) and the SID. The “Member” attribute will become a Key property:
[ManagementEntity(Name = "Win32_LocalAdmins")]
public class Class1
{
[ManagementKey]
public string Member { get; set; }
[ManagementProbe]
public string Type { get; set; }
[ManagementProbe]
public string SID { get; set; }
}
6. To fill up the class with values, we need to define a Constructor:
public Class1(string sMember, string sGUID, string sType)
{
Member = sMember;
SID = sGUID;
Type = sType;
}
7. The missing part now is the code which will be executed if the WMI Class is enumerated. So you have to declare a function of the type IEnumerable:
[ManagementEnumerator]
static public IEnumerable GetAdmins()
{ // GetAdmin Code }
The code should create new instances of Class1 for each member of the local adming group by using the Constructor of Class1:
return new Class1(Name, SID, Type)
Note: Download the attached VS2008 Project to see the complete code behind "GetAdmins()".
That’s all you need to create a dynamic WMI Class ... But how to Install the WMIProvider ?
You have to create an Installer class and it would make sense to provide a way to uninstall the „Win32_LocalAdmins“ class:
[System.ComponentModel.RunInstaller(true)]
public class MyInstall : DefaultManagementInstaller
{
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
System.Runtime.InteropServices.RegistrationServices RS =
new System.Runtime.InteropServices.RegistrationServices();
}
public override void Uninstall(IDictionary savedState)
{
try
{
ManagementClass MC =
new ManagementClass(@"root\cimv2:Win32_LocalAdmins");
MC.Delete();
}
catch { }
try
{
base.Uninstall(savedState);
}
catch { }
}
}
Now, you have to copy the library to the Global Assembly Cache by using the Command:
gacutil.exe /i „<Path>\classlibrary1.dll“
The WMIProvider can now be installed with the command:
InstallUtil.exe /i “<Path>\classlibrary1.dll”
Both last manual actions can be easy integrated in a Windows Installer Setup Project.
Done... If you start "wmic.exe path win32_LocalAdmins" you should get a list with all the members of your local administrators group:
wmic:root\cli>path Win32_LocalAdmins
Member SID Type
Administrator S-1-5-21-3333231195-3254942849-1953328938-500 User
The complete VS2008 Project can be downloaded at:
http://myitforum.com/cs2/blogs/rzander/LocalAdminWMIProvider.zip
WMIC is a very powerful but rarely used tool to manage WMI from Command-line and it's part of the Operating-system since WindowsXP.... !
Some examples to trigger SMS/SCCM Client Actions from command line:
Disable Software-Distribution:
WMIC /namespace:\\root\ccm\policy\machine\requestedconfig path ccm_SoftwareDistributionClientConfig CREATE ComponentName="Disable SWDist",Enabled="false",LockSettings="TRUE",PolicySource="local",PolicyVersion="1.0" ,SiteSettingsKey="1" /NOINTERACTIVE
Re-Activate Software-Distribution:
WMIC /namespace:\\root\ccm\policy\machine\requestedconfig path ccm_SoftwareDistributionClientConfig WHERE ComponentName="Disable SWDist" delete /NOINTERACTIVE
Trigger Hardware Inventory:
WMIC /namespace:\\root\ccm path sms_client CALL TriggerSchedule "{00000000-0000-0000-0000-000000000001}" /NOINTERACTIVE
Trigger Software Inventory:
WMIC /namespace:\\root\ccm path sms_client CALL TriggerSchedule "{00000000-0000-0000-0000-000000000002}" /NOINTERACTIVE
Trigger DataDiscoverRecord (DDR) update:
WMIC /namespace:\\root\ccm path sms_client CALL TriggerSchedule "{00000000-0000-0000-0000-000000000003}" /NOINTERACTIVE
Force a FULL HW Inventory on next HW-Inv Schedule:
WMIC /namespace:\\root\ccm\invagt path inventoryActionStatus where InventoryActionID="{00000000-0000-0000-0000-000000000001}" DELETE /NOINTERACTIVE
Repair SMS/SCCM Agent on a remote client:
WMIC /node:%MACHINE% /namespace:\\root\ccm path sms_client CALL RepairClient
Repair a list (all clients listed in clients.txt) of remote SMS/SCCM Agents:
WMIC /node:@clients.txt /namespace:\\root\ccm path sms_client CALL RepairClient
In SCCM2007, the Configuration Baselines or Items do store the LocaleID (Language Code) from the System where they are created.
If you have the SCCM Admin Console installed on a System with a different OS Language than the language of SCCM on the Primary Server, be aware that Configuration Baselines and Items created on that System will not work properly (mainly Web-Reporting)...
Most of the DCM Reports are linked with the View "v_LocalizedCIProperties_SiteLoc" which does lookup for ConfigItems with the same LocaleID as on the SCCM Server.
SQL statement of v_LocalizedCIProperties_SiteLoc:
select loc.*
from SMSData sms
cross apply fn_LocalizedCIProperties(sms.LocaleID) loc
The View will not report instances if the CI's do have a different LocaleID.
Workaround1:
Change the Queries of the DCM reports to use the view "v_LocalizedCIProperties" instead of "v_LocalizedCIProperties_SiteLoc"...
Workaround2:
Change the LocaleID of the CI's by editing the SQL table "CI_LocalizedProperties" to the same LocaleID as in dbo.SMSData.LocaleID....
Workaround3:
Modify the CI's (like changing the name) with the Admin Console on the SCCM Server (this will create an additional object in dbo.CI_LocalizedProperties)...
SCCM2007 creates a folder "SMSPKGSIG" on the drive where the SCCM ProgramFiles are installed.
To move the folder to another drive, you have to do the following actions:
-
Stop all SCCM related services (SMS_EXECUTIVE, SMS_SITE_COMPONENT_MANAGER, SMS_SITE_VSS_WRITER)
-
Edit the registry key: HKLM\SOFTWARE\Microsoft\SMS\Components\SMS_DISTRIBUTION_MANAGER\Signature Manager\SignatureRepository = <NewDrive>:\SMSPKGSIG
-
Move the folder SMSPKGSIG to the new drive
-
Start the SCCM services (SMS_SITE_VSS_WRITER, SMS_SITE_COMPONENT_MANAGER, SMS_EXECUTIVE, SMS_SITE_VSS_WRITER)
Note: Do not move the "SMSSIG$" folder, this procedure is only for the "SMSPKGSIG" folder...
Caution: This is not an official/supported procedure... implementation at your own risk !!!
The documentation for the smsclictr.automation library (used for SMS Client Center and SMS Collection Commander) was updated.
http://smsclictr.sourceforge.net/smsclictr.automation/
Note: The Documentation.chm file should not be opened online (download first).
The technical release 1.1.3.3 is published at:
http://smsclictr.sourceforge.net/
Changes:
- FIX: "register MSXML3.dll" action fixed
- DCMScan feature added (SCCM2007 required)
Collection Commander technical release 1.3.0.2 published at:
http://smscollctr.sourceforge.net/
Changes:
- Counter for online clients added
- local Policy Import for SCCM clients added (the policy format has changed with SCCM)
- OOB (OutOfBand) Discovery feature added (SCCM2007 SP1 required)
- Run custom command feature added
Note:
There will be no WindowsInstaller Package for technical releases. The technical releases must be installed from the "ClickOnce" deployment page.
More Posts
Next page »