This past week I needed to remove multiple drivers from SCCM and replace them with updated versions. The only way to do this via the console is one by one. This probably isn’t a big deal if you only have a couple of different platforms however once you start getting into double digits it gets time consuming. You can disable multiple drivers at once but not delete – hopefully this was just a miss by Microsoft and will be resolved in upcoming versions of SCCM. Luckily I found a post by Rod Trent (http://myitforum.com/cs2/blogs/rtrent/archive/2008/11/12/script-to-delete-drivers.aspx) in which he has provided a script that will delete all disabled drivers. This is very handy if you want to delete some drivers but not all. (Most likely scenario for SCCM administrators) Anyway I ended up running this script from my primary site server and within minutes all of my disabled drivers had been removed.
' Connect to the SMS namespace
siteNamespace = GetSiteNamespace()
SET objWMIService = GetObject( "winmgmts:{impersonationLevel=impersonate}!"_
&siteNamespace)
SET drivers = objWMIService.ExecQuery("SELECT * From SMS_Driver")
numDriversDeleted = 0
' Process the results
FOR EACH driver in drivers
IF driver.IsEnabled = 0 THEN
driver.Delete_
numDriversDeleted = numDriversDeleted +1
END IF
NEXT
WScript.Echo "Successfully deleted "&numDriversDeleted&" drivers."
'
' Utility function to search for the site namespace
'
FUNCTION GetSiteNamespace()
' Find SMS Provider
SET objSMSNamespace = GetObject("winmgmts:{impersonationLevel="&_
"impersonate}!\\.\root\sms")
SET results = objSMSNamespace.ExecQuery("SELECT * From "&_
"SMS_ProviderLocation WHERE ProviderForLocalSite = true")
' Process the results
FOR EACH r in results
namespacePath = r.NamespacePath
NEXT
' Fail if we did not find the site
IF namespacePath = "" THEN
WScript.Echo "Failed to locate SMS provider."
WScript.Quit 1
END IF
' Return
GetSiteNamespace = namespacePath
END FUNCTION
Update: This issue has been resolved in Confg Mgr SP2
Saturday, March 6, 2010
Thursday, March 4, 2010
MMS 2010 Here I Come...
Well it’s been three years in the making but I’m finally going to get a chance to attend the Microsoft Management Summit. I’ve only been looking after our SMS environment for just about three years now. So two years ago , by the time that I found out about MMS it had already taken place and then last year our training / conference budget was axed – not surprised. Besides last year all non-essential projects were shut down due to a few core business initiatives so a move to SCCM was out of the question. What a difference a year makes. We have already started our SMS – SCCM migration plus we a few other core client-side projects in the works so the timing of MMS couldn’t be better.
http://www.mms-2010.com/public/home.aspx
http://www.mms-2010.com/public/home.aspx
Labels:
MMS
Sunday, February 28, 2010
SCCM 2007 Integration with SQL Server Reporting Services
Recently I was catching up on some TechNet reading and came across a really good article detailing the integration of SCCM and SQL Server Reporting Services (SSRS) that is available with the SCCM R2 release. It details integrating the standard SCCM reports with SSRS as well as creating your own custom reports. Until the R2 release the SCCM reporting engine had remained fairly unchanged but with the integration of SSRS the possibilities are endless. Check out the full article here...
http://technet.microsoft.com/en-us/magazine/ee914611.aspx
http://technet.microsoft.com/en-us/magazine/ee914611.aspx
Labels:
ConfigMgr / SCCM
Wednesday, February 24, 2010
Chasing down DCOM errors
A while back one of my SMS servers started getting DCOM errors, it was consistent every couple of minutes there would 10 – 15 entries. Shorty there after another one of my SMS servers starting getting the errors. After a little investigation it was discovered that the launch and activation permissions for the SMS Agent Host component had been changed for one of the local IIS accounts – probably due to OS patching. The error that we were getting was:
The application-specific permission settings do not grant Local Launch permission for the COM Server application with CLSID {CLSID}
to the user <username>. This security permission can be modified using the Component Services administrative tool.
To resolve the issue I did the following:
• In the registry locate the CLSID that is being reported as having problems in the Event Viewer
• Make note of the application ID associated with the CLSID
• Open up the Components Services snap-in and navigate to Component Services / Computers / My Computer / DCOM Config
• Highlight DCOM Config and select the Details view
• On the Security tab locate the Launch and Activation Permissions, select Customize and then Edit
• Give the user account specified in the event log the appropriate permissions to the component
The application-specific permission settings do not grant Local Launch permission for the COM Server application with CLSID {CLSID}
to the user <username>. This security permission can be modified using the Component Services administrative tool.
To resolve the issue I did the following:
• In the registry locate the CLSID that is being reported as having problems in the Event Viewer
• Make note of the application ID associated with the CLSID
• Open up the Components Services snap-in and navigate to Component Services / Computers / My Computer / DCOM Config
• Highlight DCOM Config and select the Details view
• On the Security tab locate the Launch and Activation Permissions, select Customize and then Edit
• Give the user account specified in the event log the appropriate permissions to the component
Labels:
Windows Server 2003,
Windows XP
Sunday, February 21, 2010
Booting a WinPE RIS based image with an Intel NIC
Currently the way we deploy workstations at my company is we load a WinPE image via RIS and then we utilize SMS OSD. Why are we still using RIS you ask? RIS used to be our primary deployment tool but now it’s just used as a PXE server which will be retired once we move to SCCM 2007. Every once in a while a workstation would fail during the initialization of our WinPE boot image. We were able to determine that this only happened on machines that had an Intel based NIC and the error that we received had to do with parsing of the driver .inf file. We found a post that referenced a Microsoft KB article (http://support.microsoft.com/kb/923831) about problems parsing the Intel driver .inf file during the WinPE boot process. In the .inf file there is a section called Minihelp which has a series of entries that contain long strings. These long strings couldn’t be parsed correctly causing the imaging process to fail. The solution – replace these long strings with a single character, any character. I went in and made this change in all of my Intel .inf driver files and the problem has not surfaced since.
Before:
; Minihelp
FlowControlMiniHelp = "Pauses packet transmission on receipt of full flow control frame and sends full flow control frame to notify the other side to stop transmission."
AutoNegMiniHelp = "The adapter can either negotiate with its link partner or force the speed and duplex. The link partner must match the setting chosen!"
AutoNegAdvertisedMiniHelp = "This can be used to restrict the speeds and duplexes advertised to a link partner during autonegotiation."
ChecksumTxTcpMiniHelp = "Allows the adapter to compute TCP or UDP checksum of transmitted packets. May improve TCP and UDP transmit performance."
ChecksumRxTcpMiniHelp = "Allows the adapter to verify the TCP checksum of incoming packets. May improve TCP receive performance."
ChecksumTxIpMiniHelp = "Allows the adapter to compute IP checksum of transmitted packets. May improve IP transmit performance."
ChecksumRxIpMiniHelp = "Allows the adapter to verify the IP checksum of incoming packets. May improves IP receive performance."
TcpSegmentationMiniHelp = "Allows the adapter to offload the task of segmenting TCP messages. May improve CPU utilization."
NumRxDescriptorsMiniHelp = "Sets the number of buffers the driver uses when copying data to protocol memory. Increasing this value can enhance receive performance, but also consumes system memory. Use the default if performance is not an issue."
NumTxDescriptorsMiniHelp = "Sets the number of data segments that enable the adapter to track transmit packets. Increasing this value can improve transmit performance, but also consumes system memory. Use the default if performance is not an issue."
JumboFramesMiniHelp = "Enables sending larger Ethernet packets on gigabit networks."
TaggingModeMiniHelp = "Enables sending and receiving of IEEE Tagged frames (802.3ac/802.1p/802.1Q), which include priority and VLAN indicators."
LAAMiniHelp = "Allows you to configure a custom MAC address for the adapter."
EnablePMEHelp = "Enables/disables wake-up from Advanced Power Management (APM) sleep states."
WakeOnHelp = "Determines how to wake the system."
WakeOnLinkHelp = "Allows wake-up from APM power management when link is reconnected."
LogLinkStateMiniHelp = "Enables/disables recording of the link state message to the Event Viewer."
SmartPowerDownMiniHelp = "Minimizes power consumption by enabling the adapter to enter a deep sleep mode when it does not have a valid link or when the operating system is in Suspend mode."
ITRMiniHelp = "Determines rate at which the controller moderates interrupts. Default is optimized for common configurations. Changing this setting may improve performance for some configurations."
MasterSlaveModeMiniHelp = "Determines IEEE 802.3ab Master-Slave resolution during gigabit auto-negotiation. Default is recommended for most configurations. Forcing a setting can break link if partner is not configured correctly."
WaitAutoNegCompleteMiniHelp = "Determines whether the driver waits for link to be detected before finishing initialization. Select Auto Detect to let the driver control the setting for copper or fiber adapters."
RssModeMiniHelp = "Distribute packet receive processing over 2 processors."
After:
; Minihelp
FlowControlMiniHelp = "h"
AutoNegMiniHelp = "h"
AutoNegAdvertisedMiniHelp = "h"
ChecksumTxTcpMiniHelp = "h"
ChecksumRxTcpMiniHelp = "h"
ChecksumTxIpMiniHelp = "h"
ChecksumRxIpMiniHelp = "h"
TcpSegmentationMiniHelp = "h"
NumRxDescriptorsMiniHelp = "h"
NumTxDescriptorsMiniHelp = "h"
JumboFramesMiniHelp = "h"
TaggingModeMiniHelp = "h"
LAAMiniHelp = "h"
EnablePMEHelp = "h"
WakeOnHelp = "h"
WakeOnLinkHelp = "h"
LogLinkStateMiniHelp = "h"
SmartPowerDownMiniHelp = "h"
ITRMiniHelp = "h"
MasterSlaveModeMiniHelp = "h"
WaitAutoNegCompleteMiniHelp = "h"
RssModeMiniHelp = "h"
Before:
; Minihelp
FlowControlMiniHelp = "Pauses packet transmission on receipt of full flow control frame and sends full flow control frame to notify the other side to stop transmission."
AutoNegMiniHelp = "The adapter can either negotiate with its link partner or force the speed and duplex. The link partner must match the setting chosen!"
AutoNegAdvertisedMiniHelp = "This can be used to restrict the speeds and duplexes advertised to a link partner during autonegotiation."
ChecksumTxTcpMiniHelp = "Allows the adapter to compute TCP or UDP checksum of transmitted packets. May improve TCP and UDP transmit performance."
ChecksumRxTcpMiniHelp = "Allows the adapter to verify the TCP checksum of incoming packets. May improve TCP receive performance."
ChecksumTxIpMiniHelp = "Allows the adapter to compute IP checksum of transmitted packets. May improve IP transmit performance."
ChecksumRxIpMiniHelp = "Allows the adapter to verify the IP checksum of incoming packets. May improves IP receive performance."
TcpSegmentationMiniHelp = "Allows the adapter to offload the task of segmenting TCP messages. May improve CPU utilization."
NumRxDescriptorsMiniHelp = "Sets the number of buffers the driver uses when copying data to protocol memory. Increasing this value can enhance receive performance, but also consumes system memory. Use the default if performance is not an issue."
NumTxDescriptorsMiniHelp = "Sets the number of data segments that enable the adapter to track transmit packets. Increasing this value can improve transmit performance, but also consumes system memory. Use the default if performance is not an issue."
JumboFramesMiniHelp = "Enables sending larger Ethernet packets on gigabit networks."
TaggingModeMiniHelp = "Enables sending and receiving of IEEE Tagged frames (802.3ac/802.1p/802.1Q), which include priority and VLAN indicators."
LAAMiniHelp = "Allows you to configure a custom MAC address for the adapter."
EnablePMEHelp = "Enables/disables wake-up from Advanced Power Management (APM) sleep states."
WakeOnHelp = "Determines how to wake the system."
WakeOnLinkHelp = "Allows wake-up from APM power management when link is reconnected."
LogLinkStateMiniHelp = "Enables/disables recording of the link state message to the Event Viewer."
SmartPowerDownMiniHelp = "Minimizes power consumption by enabling the adapter to enter a deep sleep mode when it does not have a valid link or when the operating system is in Suspend mode."
ITRMiniHelp = "Determines rate at which the controller moderates interrupts. Default is optimized for common configurations. Changing this setting may improve performance for some configurations."
MasterSlaveModeMiniHelp = "Determines IEEE 802.3ab Master-Slave resolution during gigabit auto-negotiation. Default is recommended for most configurations. Forcing a setting can break link if partner is not configured correctly."
WaitAutoNegCompleteMiniHelp = "Determines whether the driver waits for link to be detected before finishing initialization. Select Auto Detect to let the driver control the setting for copper or fiber adapters."
RssModeMiniHelp = "Distribute packet receive processing over 2 processors."
After:
; Minihelp
FlowControlMiniHelp = "h"
AutoNegMiniHelp = "h"
AutoNegAdvertisedMiniHelp = "h"
ChecksumTxTcpMiniHelp = "h"
ChecksumRxTcpMiniHelp = "h"
ChecksumTxIpMiniHelp = "h"
ChecksumRxIpMiniHelp = "h"
TcpSegmentationMiniHelp = "h"
NumRxDescriptorsMiniHelp = "h"
NumTxDescriptorsMiniHelp = "h"
JumboFramesMiniHelp = "h"
TaggingModeMiniHelp = "h"
LAAMiniHelp = "h"
EnablePMEHelp = "h"
WakeOnHelp = "h"
WakeOnLinkHelp = "h"
LogLinkStateMiniHelp = "h"
SmartPowerDownMiniHelp = "h"
ITRMiniHelp = "h"
MasterSlaveModeMiniHelp = "h"
WaitAutoNegCompleteMiniHelp = "h"
RssModeMiniHelp = "h"
Labels:
OS Deployment
Subscribe to:
Posts (Atom)