<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4838417816426470642</id><updated>2012-02-16T05:21:42.529-08:00</updated><category term='virtualization'/><category term='Test Environment'/><category term='Vista'/><category term='Background Intelligent Transfer Service'/><category term='right click tools'/><category term='SCCM'/><category term='January patches'/><category term='Patching'/><category term='Deployment'/><category term='Microsoft Updates'/><category term='MMS 2007'/><category term='Refresh Package'/><category term='ITMU'/><category term='Microsoft Management Summit 2007'/><category term='ITMU update'/><category term='config Manager'/><category term='Advertisements'/><category term='SMS Site Component Manager'/><category term='sysinternals'/><category term='Scripting'/><category term='System Center Configuration Manager 2007'/><category term='RebootRequired'/><category term='Collections'/><category term='client health'/><category term='webkit'/><category term='Chrome'/><category term='kb925523'/><category term='Software Updates'/><category term='error 10052'/><category term='CSE'/><category term='server 2008'/><category term='mindmap'/><category term='Update Package'/><category term='configmgr'/><category term='Asset Intelligence'/><category term='WUA'/><category term='DSUW'/><category term='Site Server'/><category term='SCCM 2007'/><category term='OSD'/><category term='Packages'/><category term='Reinstall'/><category term='Windows 7'/><category term='927198'/><category term='DP'/><category term='SMS'/><category term='Software Inventory'/><category term='64-bit'/><category term='MP'/><category term='kb925524'/><category term='SMS site'/><category term='mms'/><category term='error 4909'/><category term='SMS v4'/><category term='SMS_SITE_COMPONENT_MANAGER'/><category term='GPP'/><category term='Search'/><category term='Google'/><category term='System Management container'/><category term='Distribution Point'/><category term='Reboot'/><category term='NewSID'/><category term='Heartbeat Discovery'/><category term='Discover Clients'/><category term='android'/><category term='Time Zone'/><category term='Discovery Methods'/><category term='VMware'/><category term='Install'/><category term='BITS'/><category term='Active Directory System Discovery'/><category term='MS07-002'/><category term='SID'/><category term='Service account'/><category term='Hardware Inventory'/><category term='Patches'/><category term='Registry Key'/><category term='1e'/><category term='Inventory Tool'/><category term='Management Point'/><title type='text'>I do IT</title><subtitle type='html'>Ideas and tips from a ConfigMGR Systems Administrator.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8966509662352750786</id><published>2009-05-01T07:01:00.001-07:00</published><updated>2009-05-01T07:01:47.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>windows 7 bootable USB</title><content type='html'>&lt;p&gt;Don't forget, you can extract the Windows 7 iso onto a bootable USB.&amp;#160; Makes the install much quicker:&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 1. diskpart&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 2. select disk 1 (if disk 1 is your USB stick)&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 3. clean&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 4. create partition primary&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 5. select partition 1&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 6. active&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 7. format fs=fat32&amp;#160;&amp;#160; (ntfs also works).&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 8. assign&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 9. exit&lt;/p&gt;  &lt;p&gt; 10. Extract the ISO&lt;/p&gt;  &lt;p&gt; 11. xcopy d:\*.* /s/e/f e:\ (Copy Windows 7 iso content to the Flash Drive E:)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8966509662352750786?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8966509662352750786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8966509662352750786' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8966509662352750786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8966509662352750786'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/05/windows-7-bootable-usb.html' title='windows 7 bootable USB'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-2298456276967781143</id><published>2009-04-30T07:51:00.001-07:00</published><updated>2009-04-30T07:51:25.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Windows 7 RC is on MSDN now</title><content type='html'>&lt;p&gt;If you have access to MSDN, go grab it!&amp;#160; Remember that your February Beta keys will still work.&amp;#160; If you need to regenerate them then these instructions will help:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.neowin.net/news/main/09/01/10/psstheres-how-to-get-your-windows-7-beta-key"&gt;http://www.neowin.net/news/main/09/01/10/psstheres-how-to-get-your-windows-7-beta-key&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-2298456276967781143?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/2298456276967781143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=2298456276967781143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2298456276967781143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2298456276967781143'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/04/windows-7-rc-is-on-msdn-now.html' title='Windows 7 RC is on MSDN now'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-5121617958149178845</id><published>2009-04-29T18:40:00.001-07:00</published><updated>2009-04-29T18:40:21.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='mms'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>ConfigMgr.next revealed at MMS09</title><content type='html'>&lt;p&gt;The MMS09 State of the Union session revealed what the next version of SCCM will look like.&amp;#160; The MMC is gone in favor of the Outlook-esqe toolbar (wonder-bar) as seen in SCOM 2007.&amp;#160; It also requires Server 2008 64-bit as well as SQL 2008 64-bit.&amp;#160; The other big piece of news is the elimination of ASP web reports in favor of SQL Server reporting services only.&amp;#160; See all the screen shots and read more about it on Kenneth van Surksum's blog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.techlog.org/archive/2009/04/29/mms_2009_information_about_mic"&gt;http://www.techlog.org/archive/2009/04/29/mms_2009_information_about_mic&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-5121617958149178845?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/5121617958149178845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=5121617958149178845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/5121617958149178845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/5121617958149178845'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/04/configmgrnext-revealed-at-mms09.html' title='ConfigMgr.next revealed at MMS09'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-1097876246311105616</id><published>2009-04-29T07:29:00.001-07:00</published><updated>2009-04-29T07:29:30.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Updates'/><category scheme='http://www.blogger.com/atom/ns#' term='server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Vista SP2 and Server 08 SP2 RTM'd</title><content type='html'>&lt;p&gt;SP2 for vista and server 08 have gone RTM.&amp;#160; Additionally the block offering SP1 is being removed (your GPO to block SP1 will no longer work).&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://windowsteamblog.com/blogs/windowsvista/archive/2009/04/28/windows-vista-sp2-rtm-windows-vista-sp1-blocker-tool-removed.aspx"&gt;http://windowsteamblog.com/blogs/windowsvista/archive/2009/04/28/windows-vista-sp2-rtm-windows-vista-sp1-blocker-tool-removed.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;All the SP2 goodness can be found here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/windows/dd767387.aspx"&gt;http://technet.microsoft.com/en-us/windows/dd767387.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-1097876246311105616?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/1097876246311105616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=1097876246311105616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1097876246311105616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1097876246311105616'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/04/vista-sp2-and-server-08-sp2-rtm.html' title='Vista SP2 and Server 08 SP2 RTM&amp;#39;d'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8143139471955494208</id><published>2009-04-29T07:05:00.001-07:00</published><updated>2009-04-29T07:05:17.285-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Updates'/><title type='text'>Office 2007 SP2 is out</title><content type='html'>&lt;p&gt;Just released:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b444bf18-79ea-46c6-8a81-9db49b4ab6e5&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=b444bf18-79ea-46c6-8a81-9db49b4ab6e5&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;time to download, test and deploy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8143139471955494208?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8143139471955494208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8143139471955494208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8143139471955494208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8143139471955494208'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/04/office-2007-sp2-is-out.html' title='Office 2007 SP2 is out'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-1932210353139592412</id><published>2009-04-25T09:53:00.001-07:00</published><updated>2009-04-25T09:53:40.188-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>windows 7 will have near complete xp compatibility</title><content type='html'>&lt;p&gt;A new feature being announced is XP mode for Windows 7.&amp;#160; XP mode is essentially an application running in a Virtual PC virtual environment.&amp;#160; Installing the application in the virtual pc environment will result in it being published to windows 7 as an application.&amp;#160; The requirements for this technology includes processor virtualization support (Intel VT or AMD-V).&amp;#160; It will be a separate out of band update released in final form to coincide with the release of windows 7 (so it's not actually built in).&amp;#160; Paul Thurrott has a nice set of screen shots on the whole thing here: &lt;a href="http://www.winsupersite.com/win7/xp_mode_pre_shots.asp"&gt;http://www.winsupersite.com/win7/xp_mode_pre_shots.asp&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-1932210353139592412?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/1932210353139592412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=1932210353139592412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1932210353139592412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1932210353139592412'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/04/windows-7-will-have-near-complete-xp.html' title='windows 7 will have near complete xp compatibility'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-3578429779027791070</id><published>2009-01-19T08:00:00.000-08:00</published><updated>2009-01-19T08:00:01.620-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asset Intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='System Center Configuration Manager 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='config Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Unable to import AI license file</title><content type='html'>&lt;p&gt;So our software licensing team asked about using SCCM's Asset Intelligence to track software license usage at our company.  After going through all of our normal internal testing we were ready to import our xml formated license file into our site.  However when we tried to import it on our production server we received a single message:&lt;/p&gt;  &lt;p&gt;error&lt;/p&gt;  &lt;p&gt;Unable to connect to the site database&lt;/p&gt;  &lt;p&gt;Not very useful since my console and site server were obviously talking to the site database just fine.  I spent many hours troubleshooting this one myself before calling Premier support.  At which time I spent many more hours troubleshooting on the phone with them and fearing that the issue would be unresolved.  We went through all kinds of troubleshooting of both my SQL server setup and my site server setup.   &lt;/p&gt;  &lt;p&gt;The only error message with any meaning behind it was when we tried to run the import manually:&lt;/p&gt;  &lt;p&gt;D:\SMSPROV\bin\i386&amp;gt;mvlsimport.exe /file //server/share/MSLtest.xml&lt;/p&gt;  &lt;p&gt;Failed to get Site Database configuration information.Failed to get Site Database connection.Failed to intialize.&lt;/p&gt;  &lt;p&gt;Yes, those are forward slashes, per explicit instructions by Microsoft Support.&lt;/p&gt;  &lt;p&gt;My gut told me it was a bug in SCCM, but how my site differed eluded both me and Microsoft support.  Ultimately, by sheer luck a stumbled across the steps that would enable me to reproduce the bug on my own.  My site had an unrelated hardware failure and I had to rebuild and recover it.  As I rebuilt it I tried the import several times along the way, until it finally failed.  Once I was able to reproduce the bug I let Microsoft know how my site differed from a working site.  Turns out there is a bug importing the license file if the smsprovider is installed on another computer other than the site server.  Support was then finally able to confirm that this was a bug that they could reproduce and would notify the development team.  In the absence of an actual fix, they provided me with a workaround.  The workaround is to export the sql node of the sms registry key from the site server and import it onto the smsprovider computer.  If you are switching architecture you will have to update the key to compensate for wow6432node as well.&lt;/p&gt;  &lt;p&gt;Export this key from your 32-bit site server: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\SQL Server]&lt;/p&gt;  &lt;p&gt;Import this key into your 32-bit smsprovider computer.&lt;/p&gt;  &lt;p&gt;Or, if your provider is 64-bit, find and replace \software\Microsoft\ with \software\wow6432node\Microsoft&lt;/p&gt;  &lt;p&gt;Key will now be in this format:&lt;/p&gt;  &lt;p&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\SMS\SQL Server]&lt;/p&gt;  &lt;p&gt;Now import the new key onto your 64-bit smsprovider computer.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-3578429779027791070?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/3578429779027791070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=3578429779027791070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3578429779027791070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3578429779027791070'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/01/unable-to-import-ai-license-file.html' title='Unable to import AI license file'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-6469860128716290445</id><published>2009-01-15T05:52:00.001-08:00</published><updated>2009-01-15T05:52:33.536-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='config Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Updates'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>wsutil to change your wsus server's ports</title><content type='html'>&lt;p&gt;Following up on my recovery of a sccm site.&amp;#160; My original recovery doc did not specify that during the wsus install, wsus needs to be setup to use its own custom website on ports 8530 (for http) and 8531 (for https).&amp;#160; I later found that if you miss this step&amp;#160; (When you notice your site fails to sync with its wsus database) then there is a simple utility installed with wsus that will allow you to change it.&amp;#160; From the command line:&lt;/p&gt;  &lt;p&gt;wsusutil.exe usecustomwebsite true&lt;/p&gt;  &lt;p&gt;Also, if your site just isn't syncing for no apparent reason, I've found that a wsus reset may help:&lt;/p&gt;  &lt;p&gt;wsusutil.exe reset&lt;/p&gt;  &lt;p&gt;You can find wsutil on the wsus server in the program files\Update Services\Tools folder.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-6469860128716290445?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/6469860128716290445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=6469860128716290445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6469860128716290445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6469860128716290445'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/01/wsutil-to-change-your-wsus-server-ports.html' title='wsutil to change your wsus server&amp;#39;s ports'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8996738027792698390</id><published>2009-01-12T07:10:00.001-08:00</published><updated>2009-01-12T07:12:00.924-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><title type='text'>Chrome on Windows 7 64-Bit Beta (7000)</title><content type='html'>&lt;p&gt;This weekend I installed the current windows 7 64-bit beta (build 7000).&amp;#160; All my favorite apps installed just fine including the SCCM console.&amp;#160; I even managed to find a beta build of the rsat tools: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=82516c35-c7dc-4652-b2ea-2df99ea83dbb&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=82516c35-c7dc-4652-b2ea-2df99ea83dbb&amp;amp;displaylang=en&lt;/a&gt;&amp;#160; The only thing that I spent a significant amount of work getting to run was google chrome.&amp;#160; I'm still in love with it, and just started using the 2.0 dev beta.&amp;#160; So of course I want to run it on top of my windows 7 beta.&amp;#160; Well now you can.&amp;#160; In the target part of your shortcut to chrome.exe add -in-process-plugins.&amp;#160; It runs just fine now.&amp;#160; Credit to: &lt;a href="http://www.blogsdna.com/1900/how-to-run-google-chrome-on-windows-7-64-bit-version.htm" target="_blank"&gt;BlogsDNA&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Oh by the way, windows 7 boots faster on the same machine I was previously running vista 64!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8996738027792698390?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8996738027792698390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8996738027792698390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8996738027792698390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8996738027792698390'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/01/chrome-on-windows-7-64-bit-beta-7000.html' title='Chrome on Windows 7 64-Bit Beta (7000)'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8306335831659837862</id><published>2009-01-09T06:35:00.001-08:00</published><updated>2009-01-09T06:35:49.134-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Install'/><category scheme='http://www.blogger.com/atom/ns#' term='System Center Configuration Manager 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Reinstall'/><category scheme='http://www.blogger.com/atom/ns#' term='config Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>Recovery of SCCM Site Failure</title><content type='html'>&lt;p&gt;Despite the fact that Microsoft has recovery information posted in their online support docs ( &lt;a href="http://technet.microsoft.com/en-us/library/bb680474.aspx" target="_blank"&gt;http://technet.microsoft.com/en-us/library/bb680474.aspx&lt;/a&gt;), site recovery is still a confusing task.&amp;#160; I've gone through several site recoveries and here are the notes from my last one, where the central site happened to fail.&amp;#160; An important note that I don't think is explained very well is that you have to have a functioning site setup the same way as the old site before you can recover the old site.&lt;/p&gt;  &lt;p&gt;So before starting the site recovery review the original site setup procedure.&amp;#160; If you don't have one documented, then see the excellent write up by Ying Li: &lt;a href="http://myitforum.com/cs2/blogs/yli628/archive/2008/06/25/setup-configmgr-2007-sp1-from-start-to-finish.aspx"&gt;http://myitforum.com/cs2/blogs/yli628/archive/2008/06/25/setup-configmgr-2007-sp1-from-start-to-finish.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notes from recovery of Central site on 12/17/08.&lt;/p&gt;  &lt;p&gt;1. OS, Server name, Site Code, and Drive layout (OS on C: and program files on drive d: ) should match original hardware.&amp;#160; (Do not move from 64-bit to 32-bit OS).&lt;/p&gt;  &lt;p&gt;2. Install the OS and configure as normal&lt;/p&gt;  &lt;p&gt;3. Give the machine account admin rights on the SQL server&lt;/p&gt;  &lt;p&gt;4. Install WSUS 3.0 with SP1.&amp;#160; Do not use the default website.&amp;#160; Use custom website.&amp;#160; During install point it to the remote SQL server (if you use a remote sql server to host wsus metadata).&amp;#160; Do not overwrite the contents of the database.&amp;#160; Do not use the configuration wizard to setup wsus.&amp;#160; Simply exit when the configuration wizard starts.&lt;/p&gt;  &lt;p&gt;5. Start copying the backup files to the local machine since it can take 1/2 hour.&lt;/p&gt;  &lt;p&gt;6. Install the correct version of SCCM&lt;/p&gt;  &lt;p&gt;a. Make sure to reuse the same program path (d:\sms for our Primary sites since they were upgrades from sms.&amp;#160; d:\sccm for our Secondary sites, since they were fresh installs when we set them up).&amp;#160; This part is critical.&amp;#160; When you do the recovery step, your site will to use the original setup paths that were in use prior to the site failure.&amp;#160; Changing the paths will cause a significant headache!&lt;/p&gt;  &lt;p&gt;b. On a new fully patched system you will not pass the prereq check.&amp;#160; Double click on each item to see how to resolve the issue.&amp;#160; You should be able to resolve every error.&lt;/p&gt;  &lt;p&gt;c. After resolving the MMC sp3 issue, it will still show up as an warning in prereq check, that is fine if you are sure you have applied sp3 for MMC.&amp;#160; The setup routine does not correctly query the registry to see that lastest version of the hotfix that Microsoft issued.&lt;/p&gt;  &lt;p&gt;d. You can ignore the warning about SQL server authentication mode if you typically run SQL under the system account (without hardening SQL).&lt;/p&gt;  &lt;p&gt;e. If you are attempting to restore a site that has a remote provider and point it back to the correct remote provider machine, the installer will complain that machine already has a provider.&lt;/p&gt;  &lt;p&gt;1. On the provider machine, the registry key is blocking the install of the new remote provider, so remove the HKLM\SOFTWARE\Microsoft\SMS\Providers key.&lt;/p&gt;  &lt;p&gt;2. On the provider machine, connect to root\sms with WBEMTEST and press the 'Enum Classes button'. No input is necessary, just press 'OK' to do an 'Immediate only' search. In the Query Results dialog window, click on the 'SMS_ProviderLocation' and press the 'Delete' key. Close out of all of these dialogs.&lt;/p&gt;  &lt;p&gt;3. Delete the SMSPROV folder on the root.&lt;/p&gt;  &lt;p&gt;4. Add the new site server machine as a local administrator and remove the old site server (if applicable).&lt;/p&gt;  &lt;p&gt;Note: Provider fix, pasted from &lt;a href="http://social.technet.microsoft.com/forums/en-US/configmgrsetup/thread/bb307748-7638-404d-a6a4-982827a051c8/"&gt;http://social.technet.microsoft.com/forums/en-US/configmgrsetup/thread/bb307748-7638-404d-a6a4-982827a051c8/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;f. All other site servers will install the provider on themselves.&lt;/p&gt;  &lt;p&gt;g. On the SQL DB server detach the old DB.&amp;#160; Create a new DB with the same name and file locations.&amp;#160; Give the smssite server db_owner on the db.&lt;/p&gt;  &lt;p&gt;7. After the install has completed successfully run the site recovery wizard.&lt;/p&gt;  &lt;p&gt;a. Close the console if open&lt;/p&gt;  &lt;p&gt;b. Start&amp;gt;all programs&amp;gt;Microsoft System Center&amp;gt;Config Mgr 2007&amp;gt;Config Mgr Site Repair Wizard&lt;/p&gt;  &lt;p&gt;c. Redsite and ROSsite do not have local DP's installed.&amp;#160; Choose the option to skip package verification.&lt;/p&gt;  &lt;p&gt;8. Reset permissions for site in AD.&lt;/p&gt;  &lt;p&gt;a. Open AD users and Computers&amp;gt; System&amp;gt; System Management&lt;/p&gt;  &lt;p&gt;b. Open properties and give site server full control on Systems Management container.&lt;/p&gt;  &lt;p&gt;c. Open advance properties and change permissions so that they apply to &amp;quot;This object and all descendant objects&amp;quot;&amp;#160; (this is not the default so be sure to do it).&lt;/p&gt;  &lt;p&gt;9. Restore the site control file&lt;/p&gt;  &lt;p&gt;a. Copy&amp;#160; s&lt;a&gt;ite_control_files&lt;/a&gt; sitectrl_&amp;lt;SiteCode&amp;gt;.ct0 to D:\sms\inboxes\sitectrl.box&lt;/p&gt;  &lt;p&gt;b. Rename file from sitectrl_&amp;lt;SiteCode&amp;gt;.ct0 to sitectrl.ct0&lt;/p&gt;  &lt;p&gt;10. After recovery perform a site reset&lt;/p&gt;  &lt;p&gt;a. Rerun setup from Start&amp;gt;all programs&amp;gt;Microsoft System Center&amp;gt;Config Mgr 2007&amp;gt;&lt;/p&gt;  &lt;p&gt;b. Choose site reset&lt;/p&gt;  &lt;p&gt;11. Set user group permissions for recovered site&lt;b&gt; &lt;u&gt;and&lt;/u&gt;&lt;/b&gt; related site servers&lt;/p&gt;  &lt;p&gt;a. Computer mgmt&amp;gt;local users and groups&amp;gt;Groups&lt;/p&gt;  &lt;p&gt;b. Sms_sitetositeconnection_&amp;lt;sitecode&amp;gt;&amp;#160; should contain the parent server and any child servers that need to connect to the site.&lt;/p&gt;  &lt;p&gt;c. Sms_siteSystemtoSiteServer_&amp;lt;sitecode&amp;gt; should contain any parent or child site that needs to write to the site's DB.&lt;/p&gt;  &lt;p&gt;d. Sms Reporting Users should contain any domain accounts that have reporting rights.&lt;/p&gt;  &lt;p&gt;e. Sms admins should contain your sms administrators domain accounts.&lt;/p&gt;  &lt;p&gt;12. If this was the central site with the wsus updates, then the wsus updates folders need to be reshared with the same share names.&amp;#160; Check the software updates deployment packages nodes.&amp;#160; On each package open the package properties.&amp;#160; The general tab will show the share name that the packages is expected to be found on.&amp;#160; The central site's machine account will need full control of this share.&lt;/p&gt;  &lt;p&gt;13. Reset the wsus db:&lt;/p&gt;  &lt;p&gt;a. From the cmd prompt:&amp;#160; c:\program files\Update Services\tools\wsusutil.exe reset&lt;/p&gt;  &lt;p&gt;b. Wait 1 hour&lt;/p&gt;  &lt;p&gt;c. Force a Synchronization on the Update Repository&lt;/p&gt;  &lt;p&gt;d. Verify wsus is syncing properly: wsyncmgr.log for errors.&lt;/p&gt;  &lt;p&gt;14. Verify backup share permissions for newly restored site.&amp;#160; Our backups are set for a share on another server, which is then backed up to tape.&amp;#160; This can be verified in the site maintenance node and by reviewing the smsbkup.log located in the backup share.&lt;/p&gt;  &lt;p&gt;15. If this was the central site, recreate the backup schedule for the site control file.&amp;#160; A scheduled task that runs every 15 mins to dump the site control file and copy them to another machine:&lt;/p&gt;  &lt;p&gt;a. site_control_file_backup.bat&lt;/p&gt;  &lt;p&gt;D:\sms\bin\i386\00000409\preinst.exe /Dump&lt;/p&gt;  &lt;p&gt;xcopy d:\*.ct0 backup_location&lt;a&gt;\site_control_files&lt;/a&gt; /C /Y&lt;/p&gt;  &lt;p&gt;16. Check and review system logs for errors for the next several days.&lt;/p&gt;  &lt;p&gt;17. Monitor Site Status for errors.&amp;#160; The only errors should be on the central site and be related to unapproved clients trying to get policy.&amp;#160; Recheck in 24 hours.&lt;/p&gt;  &lt;p&gt;18. Verify successful backups by reviewing the smsbkup.log located in the backup share.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8306335831659837862?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8306335831659837862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8306335831659837862' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8306335831659837862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8306335831659837862'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2009/01/recovery-of-sccm-site-failure.html' title='Recovery of SCCM Site Failure'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-2876378771382273122</id><published>2008-12-10T07:42:00.001-08:00</published><updated>2008-12-10T07:42:32.446-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCCM 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Config Manager Usability Study</title><content type='html'>&lt;p&gt;Microsoft is conducting a usability study for the next version of SCCM.&amp;#160; If your in the Redmond area and available Jan 12-23rd you can participate.&amp;#160; To join send an email to &lt;a href="mailto:itusable@microsoft.com"&gt;itusable@microsoft.com&lt;/a&gt;.&amp;#160; Put ConfigMgr in the subject line: &lt;a href="http://blogs.technet.com/smsandmom/archive/2008/12/05/system-center-configuration-manager-users-microsoft-s-usability-study-jan12-jan23.aspx" target="_blank"&gt;Source&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-2876378771382273122?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/2876378771382273122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=2876378771382273122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2876378771382273122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2876378771382273122'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/12/config-manager-usability-study.html' title='Config Manager Usability Study'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8682036466319580893</id><published>2008-12-01T08:00:00.000-08:00</published><updated>2008-12-15T07:23:28.258-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Install'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='System Center Configuration Manager 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='client health'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Client Health Check Script- Take 2</title><content type='html'>&lt;p&gt;In final testing of the Client Health Check Script, I found that ccmsetup doesn't finish running the install during machine startup on any XP machine that I tested.&amp;#160; I spent over 16 hours trying to figure out why before going with an alternative solution.&amp;#160; Instead of running ccmsetup during machine startup, I now create a system scheduled task to run ccmsetup 5 minutes in the future.&amp;#160; Since it's a one time task it cleans itself up.&amp;#160; Here is the modified script:&lt;/p&gt;  &lt;p&gt;Attached: &lt;a href="http://6360701576644946663-a-1802744773732722657-s-sites.googlegroups.com/site/smsimpossible/Home/SCCM_Client_Health_Check.txt?attredirects=0&amp;amp;auth=ANoY7cr741s3nQWMfkW3iTr0Pb5ePAnxmxpMo-gTQCe30t7vm1O0O7G5RsTPUqXdfw7vAkSArtWP78VCHrnhPG80XWKpuR39gCSWPNUoDrLXx3WB1Ma_jucTJ1XE8DXVIh1lgZ_a-ATl4ozGsKZTG3YzupkhKmNOOymqrgSGxumXX5Rf6RAnVrLd8Vu_uU9ZRCcOXzyxntQVo8gLqKYXinotqdAUkpTuCthgapc9U52SKt25iQfARes%3D" target="_blank"&gt;Download&lt;/a&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'==========================================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' NAME: SCCM_Client_Health_Check.vbs&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' AUTHOR: Bill Phillips , ESRI&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' DATE  : 10/20/2008&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' COMMENT: Code rewrite for SCCM client taken from 1E ClientHealth Script for SMS client&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' Run sccm_client_health_check.vbs /smsserver:smsserver /email:1stemail@company.com /email1:2ndemail@company.com&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'==========================================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; smsserver, platform, email&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; domainrole, ComSpec, diffdate, enddate, fso, filedate, SmsClient, returncode, Results&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ISmsClient, DiscoveredSite, AssignedSite&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; servicename, startdate, strMessage, strSMSPolEval, windir, wmi, colItems, wShShell, Compname, present, objShare&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; BitsVersion, tempdir, logfile, logsize&lt;br /&gt;            &lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt; WshShell = WScript.CreateObject(&lt;span class="str"&gt;&amp;quot;WScript.Shell&amp;quot;&lt;/span&gt;)&lt;br /&gt;        WinDir = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;&amp;quot;%windir%&amp;quot;&lt;/span&gt;)&lt;br /&gt;        Compname = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;&amp;quot;%COMPUTERNAME%&amp;quot;&lt;/span&gt;)&lt;br /&gt;        ComSpec = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;&amp;quot;%COMSPEC%&amp;quot;&lt;/span&gt;)&lt;br /&gt;        tempdir = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;&amp;quot;%temp%&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;br /&gt;        &lt;span class="rem"&gt;'Set up the loggong&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt; fso = CreateObject(&lt;span class="str"&gt;&amp;quot;Scripting.FileSystemObject&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt; logfile = fso.OpenTextFile(tempdir &amp;amp; &lt;span class="str"&gt;&amp;quot;\SCCM_Client_Health_Check.Log&amp;quot;&lt;/span&gt;,2,&lt;span class="kwrd"&gt;True&lt;/span&gt;)&lt;br /&gt;        &lt;br /&gt;    &lt;br /&gt;        &lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;&amp;quot;####################################&amp;quot;&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;&amp;quot;Begining SCCM Client Health Check Script&amp;quot;&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;&amp;quot;####################################&amp;quot;&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span class="rem"&gt;'********************************************************HARD CODED COMMAND LINE &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;OVERRIDES&lt;/span&gt;********************************************************    &lt;br /&gt;&lt;span class="rem"&gt;'***********************************************************UNCOMMENT ONLY IF &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;NECESSARY***********************************************************&lt;br /&gt;&lt;span class="rem"&gt;'smsserver = &amp;quot;smsserver&amp;quot; 'Should reflect the PMP/PDP for each office&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'platform = &amp;quot;&amp;quot; 'No need to modify&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'Email = &amp;quot;wphillips@company.com&amp;quot; 'Should be set to go to an alias that includes the needed peoeple.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'********************************************************HARD CODED COMMAND LINE &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;OVERRIDES&lt;/span&gt;********************************************************    &lt;br /&gt;&lt;span class="rem"&gt;'***********************************************************UNCOMMENT ONLY IF &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;NECESSARY***********************************************************&lt;br /&gt;checkSCCMserverCMD()&lt;br /&gt;checkPlatformCMD()&lt;br /&gt;checkEmailCMD()&lt;br /&gt;checkEmail1CMD()&lt;br /&gt;checkAdminShare()&lt;br /&gt;checkCCMSetupRunning()&lt;br /&gt;checkClient()&lt;br /&gt;checkLogsUpdate()&lt;br /&gt;checkBITSversion()&lt;br /&gt;checkServices()&lt;br /&gt;checkAssignment()&lt;br /&gt;    logfile.writeline &lt;span class="str"&gt;&amp;quot;Cleaning Up&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;    logfile.writeline &lt;span class="str"&gt;&amp;quot;Ending Processing&amp;quot;&lt;/span&gt;&lt;br /&gt;WScript.Quit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;'Check to see if SCCM server is specifed as an argument or hardcoded into script&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkSCCMserverCMD()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; smsserver = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;           &lt;br /&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named.Exists(&lt;span class="str"&gt;&amp;quot;smsserver&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;smsserver&amp;quot;&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                logfile.writeline &lt;span class="str"&gt;&amp;quot;smsserver specified in command line is &amp;quot;&lt;/span&gt; &amp;amp; WScript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;smsserver&amp;quot;&lt;/span&gt;)&lt;br /&gt;              &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                logfile.writeline &lt;span class="str"&gt;&amp;quot;/smsserver parameter is the incorrect format. Please see documentation&amp;quot;&lt;/span&gt;&lt;br /&gt;                  WScript.Quit&lt;br /&gt;              &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;&amp;quot;Missing /smsserver: in command line&amp;quot;&lt;/span&gt;&lt;br /&gt;                  WScript.Quit&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;            logfile.WriteLine &lt;span class="str"&gt;&amp;quot;The SCCMserver hardcoded command line override specified as = &amp;quot;&lt;/span&gt; &amp;amp; smsserver&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkPlatformCMD()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;logfile.writeline &lt;span class="str"&gt;&amp;quot;CheckingPlatformCMD&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; platform = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              domainrole = GetDomainRole()&lt;br /&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named.Exists(&lt;span class="str"&gt;&amp;quot;platform&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;platform&amp;quot;&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                      platform = Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;platform&amp;quot;&lt;/span&gt;)&lt;br /&gt;                      logfile.WriteLine &lt;span class="str"&gt;&amp;quot;platform = &amp;quot;&lt;/span&gt; &amp;amp; platform&lt;br /&gt;                    &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(platform) = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(domainrole) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                        logfile.WriteLine &lt;span class="str"&gt;&amp;quot;System running is not the correct platform as specified&amp;quot;&lt;/span&gt;&lt;br /&gt;                        WScript.Quit&lt;br /&gt;                    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;            logfile.WriteLine &lt;span class="str"&gt;&amp;quot;platform hardcoded command line override specified as = &amp;quot;&lt;/span&gt; &amp;amp; platform&lt;br /&gt;            domainrole = GetDomainRole()&lt;br /&gt;                &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(Platform) = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(domainrole) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                    logfile.WriteLine &lt;span class="str"&gt;&amp;quot;System running is not the correct platform as specified&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Quit&lt;br /&gt;                &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkEmailCMD()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;    logfile.WriteLine &lt;span class="str"&gt;&amp;quot;Inside checkEmailCMD&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; email = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; WScript.Arguments.Named.Exists(&lt;span class="str"&gt;&amp;quot;email&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                email = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;            logfile.WriteLine (&lt;span class="str"&gt;&amp;quot;Email command line argument specified as = &amp;quot;&lt;/span&gt; &amp;amp; WScript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;email&amp;quot;&lt;/span&gt;))&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;            logfile.WriteLine (&lt;span class="str"&gt;&amp;quot;Email hardcoded command line override specified as = &amp;quot;&lt;/span&gt; &amp;amp; email)&lt;br /&gt;            email = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkEmail1CMD()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;    logfile.WriteLine &lt;span class="str"&gt;&amp;quot;Inside checkEmail1CMD&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; email1 = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; WScript.Arguments.Named.Exists(&lt;span class="str"&gt;&amp;quot;email1&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                   email1 = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;            logfile.WriteLine (&lt;span class="str"&gt;&amp;quot;Email1 command line argument specified as = &amp;quot;&lt;/span&gt; &amp;amp; WScript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;email1&amp;quot;&lt;/span&gt;))&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;            logfile.WriteLine (&lt;span class="str"&gt;&amp;quot;Additional email hardcoded command line override specified as = &amp;quot;&lt;/span&gt; &amp;amp; email)&lt;br /&gt;                email1 = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkAdminShare()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;        logfile.WriteLine &lt;span class="str"&gt;&amp;quot;Inside checkAdminShare&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Check for Admin$ - If not present then log&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt; wmi = getobject(&lt;span class="str"&gt;&amp;quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt; colItems = wmi.ExecQuery(&lt;span class="str"&gt;&amp;quot;Select * From Win32_Share&amp;quot;&lt;/span&gt;,,48)&lt;br /&gt;        present = &lt;span class="str"&gt;&amp;quot;FALSE&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; objShare &lt;span class="kwrd"&gt;In&lt;/span&gt; colItems&lt;br /&gt;           &lt;span class="kwrd"&gt;If&lt;/span&gt; LCASE(objShare.Name) = &lt;span class="str"&gt;&amp;quot;admin$&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              present = &lt;span class="str"&gt;&amp;quot;TRUE&amp;quot;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; present &amp;lt;&amp;gt; &lt;span class="str"&gt;&amp;quot;TRUE&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              logfile.writeline &lt;span class="str"&gt;&amp;quot;Sending email that Admin$ is missing&amp;quot;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;Admin$ Missing&amp;quot;&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;&amp;quot; does not have an Admin$.&amp;quot;&lt;/span&gt;)&lt;br /&gt;           &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;              logfile.writeline &lt;span class="str"&gt;&amp;quot;Admin$ is missing.&amp;quot;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkCCMSetupRunning()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside checkCCMSetupRunning&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Abort if ccmsetup running&lt;/span&gt;&lt;br /&gt;        Results = ServiceState(&lt;span class="str"&gt;&amp;quot;ccmsetup&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; LCase(Results) = LCase(&lt;span class="str"&gt;&amp;quot;Running&amp;quot;&lt;/span&gt;)&lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                    logfile.writeline &lt;span class="str"&gt;&amp;quot;Sending email that ccmsetup service is running and script is aborting&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;Aborting Client Installation&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;ccmsetup is running on &amp;quot;&lt;/span&gt; &amp;amp; CompName)&lt;br /&gt;                    WScript.Quit&lt;br /&gt;                &lt;br /&gt;                    logfile.writeline &lt;span class="str"&gt;&amp;quot;Exiting script processing because ccmsetup service is running&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Quit&lt;br /&gt;                &lt;br /&gt;            &lt;span class="kwrd"&gt;Elseif&lt;/span&gt; LCase(Results) = LCase(&lt;span class="str"&gt;&amp;quot;Stopped&amp;quot;&lt;/span&gt;)&lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                logfile.WriteLine &lt;span class="str"&gt;&amp;quot;ccmsetup service is in a stopped state, attempting to start&amp;quot;&lt;/span&gt;&lt;br /&gt;                KickService(&lt;span class="str"&gt;&amp;quot;ccmsetup&amp;quot;&lt;/span&gt;)&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkBITSrunning()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside checkBITSRunning&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Start BITS running&lt;/span&gt;&lt;br /&gt;        Results = ServiceState(&lt;span class="str"&gt;&amp;quot;BITS&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; LCase(Results) = LCase(&lt;span class="str"&gt;&amp;quot;Running&amp;quot;&lt;/span&gt;)&lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                    logfile.writeline &lt;span class="str"&gt;&amp;quot;BITS is running&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                logfile.WriteLine &lt;span class="str"&gt;&amp;quot;BITS service is in a stopped state, attempting to start&amp;quot;&lt;/span&gt;&lt;br /&gt;                KickService(&lt;span class="str"&gt;&amp;quot;BITS&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkClient()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside checkClient&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;' SMS Client COM object available, Version Installed, &amp;amp; WMI Namespace available&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;Set&lt;/span&gt; SmsClient = GetObject(&lt;span class="str"&gt;&amp;quot;winmgmts:ROOT/CCM:SMS_Client=@&amp;quot;&lt;/span&gt;)&lt;br /&gt;          &lt;span class="kwrd"&gt;If&lt;/span&gt; Err &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;'Advanced client not installed&lt;/span&gt;&lt;br /&gt;            logfile.writeline &lt;span class="str"&gt;&amp;quot;Advanced Client not installed, calling AdvCliInst to install the client&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Call&lt;/span&gt; AdvCliInst(ComSpec)&lt;br /&gt;            WScript.Sleep 1000&lt;br /&gt;            &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;            WScript.Quit&lt;br /&gt;          &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;              logfile.writeline SmsClient.ClientVersion&lt;br /&gt;            &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; SmsClient.ClientVersion&lt;br /&gt;&lt;span class="rem"&gt;'IMPORTANT! &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Adjust CASE as necessary, but do *not* remove it! &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;IMPORTANT!&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;'Alter this by adding an additional CASE statement followed by the version in quotes for each SMS client&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;'version which is allowed in the hierarchy. This can also be used as an additional cleanup method after&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;'upgrading clients for those that might have missed this via software distribution  &lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;'Case &amp;quot;2.50.3174.1018&amp;quot;&lt;/span&gt;&lt;br /&gt;          &lt;span class="rem"&gt;'Case &amp;quot;2.50.4160.2000&amp;quot; 'SP2 Version&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;4.00.6221.1000&amp;quot;&lt;/span&gt; &lt;span class="rem"&gt;'configMGR sp1 client&lt;/span&gt;&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;SMS Client Version Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;            WScript.Sleep 1&lt;br /&gt;              &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;Calling AdvCliInst routine to install SMS Advanced client&amp;quot;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;Call&lt;/span&gt; AdvCliInst(ComSpec)&lt;br /&gt;                WScript.Sleep 1000&lt;br /&gt;                &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;                WScript.Quit&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkLogsUpdate()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;Set&lt;/span&gt; SmsClient = GetObject(&lt;span class="str"&gt;&amp;quot;winmgmts://./root/ccm:SMS_Client&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;span class="rem"&gt;' SMS Logs recently updated&lt;/span&gt;&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;&amp;quot;Begining to evaluate &amp;quot;&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\CCM\Logs\PolicyEvaluator.log&amp;quot;&lt;/span&gt;&lt;br /&gt;          strSMSPolEval = windir &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\CCM\Logs\PolicyEvaluator.log&amp;quot;&lt;/span&gt;&lt;br /&gt;          startdate = ShowFileAccessInfo(strSMSPolEval, Compname)&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;startdate = &amp;quot;&lt;/span&gt; &amp;amp; startdate&lt;br /&gt;          enddate = &lt;span class="kwrd"&gt;date&lt;/span&gt;()&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;enddate = &amp;quot;&lt;/span&gt;  &amp;amp; enddate&lt;br /&gt;    &lt;br /&gt;          &lt;span class="kwrd"&gt;If&lt;/span&gt; isDate(startdate) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;            diffdate = DateDiff(&lt;span class="str"&gt;&amp;quot;d&amp;quot;&lt;/span&gt;, startdate, enddate)&lt;br /&gt;            logfile.writeline &lt;span class="str"&gt;&amp;quot;diffdate = &amp;quot;&lt;/span&gt; &amp;amp; diffdate&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;          &lt;span class="kwrd"&gt;If&lt;/span&gt; diffdate &amp;gt; 21 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;diffdate is greater than 21 days, sending email&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;Log files are out of date&amp;quot;&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;&amp;quot; has not updated is logs in 21 days or more - attempting client repair&amp;quot;&lt;/span&gt;)&lt;br /&gt;              &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;diffdate is greater than 21 days, attempting to repair SMS Client&amp;quot;&lt;/span&gt;&lt;br /&gt;                  smsClient.RepairClient&lt;br /&gt;                  wscript.quit&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkBITSversion()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Check BITS version, email if out of date&lt;/span&gt;&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;Checking BITS version by looking at &amp;quot;&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\QMgr.dll&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; fso.FileExists(windir &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\QMgr.dll&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                BitsVersion = fso.GetFileVersion(windir &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\QMgr.dll&amp;quot;&lt;/span&gt;)&lt;br /&gt;                logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion is &amp;quot;&lt;/span&gt; &amp;amp; BitsVersion&lt;br /&gt;                &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; BitsVersion &lt;br /&gt;&lt;br /&gt;                  &lt;span class="rem"&gt;' Case for Windows 2000 Server and Pro&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.6.2600.1596&amp;quot;&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 1&lt;br /&gt;                    &lt;br /&gt;                  &lt;span class="rem"&gt;' Case for Windows XP SP2&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.7.2600.3143&amp;quot;&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 1&lt;br /&gt;&lt;br /&gt;                  &lt;span class="rem"&gt;' Case for Windows XP SP3&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.7.2600.5512&amp;quot;&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 1&lt;br /&gt;                    &lt;br /&gt;                   &lt;span class="rem"&gt;' Case for Server 2003 SP1&lt;/span&gt;&lt;br /&gt;                           &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.6.3790.1830&amp;quot;&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 1&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;' Case for Server 2003 SP2&lt;/span&gt;&lt;br /&gt;                           &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.6.3790.3959&amp;quot;&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 1&lt;br /&gt;                    &lt;br /&gt;                  &lt;span class="rem"&gt;' Case for Vista&lt;/span&gt;&lt;br /&gt;                           &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;7.0.6000.16386&amp;quot;&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 1&lt;br /&gt;&lt;br /&gt;                  &lt;span class="rem"&gt;' Case for Server 2008 SP1&lt;/span&gt;&lt;br /&gt;                           &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;7.0.6001.18000&amp;quot;&lt;/span&gt;&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 1&lt;br /&gt;                   &lt;br /&gt;&lt;br /&gt;                   &lt;span class="rem"&gt;' Case for failure&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                       &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                             logfile.writeline &lt;span class="str"&gt;&amp;quot;BITS is out of date, sending email&amp;quot;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;BITS out of date&amp;quot;&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;&amp;quot; - BITS version is at &amp;quot;&lt;/span&gt; &amp;amp; BitsVersion)&lt;br /&gt;                        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                            logfile.writeline &lt;span class="str"&gt;&amp;quot;BITS is out of date, exiting script processing&amp;quot;&lt;/span&gt;&lt;br /&gt;                            WScript.Quit&lt;br /&gt;                        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                logfile.writeline &lt;span class="str"&gt;&amp;quot;Unable to process BITS version because &amp;quot;&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\QMgr.dll is missing. Sending email.&amp;quot;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;File Missing&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;%system32%\QMgr.dll&amp;quot;&lt;/span&gt; &amp;amp; &lt;span class="str"&gt;&amp;quot; is missing on &amp;quot;&lt;/span&gt; &amp;amp; Compname)&lt;br /&gt;            &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                logfile.writeline &lt;span class="str"&gt;&amp;quot;Unable to process BITS version because &amp;quot;&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\QMgr.dll is missing. Exiting Script processing.&amp;quot;&lt;/span&gt;&lt;br /&gt;                WScript.Quit&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkServices()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;' SMS Agent Host Service started&lt;/span&gt;&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;Calling KickService&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Call&lt;/span&gt; KickService(&lt;span class="str"&gt;&amp;quot;CcmExec&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &lt;br /&gt;        &lt;span class="rem"&gt;' Remote Registry Service started&lt;/span&gt;&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;Calling RemoteRegistry&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Call&lt;/span&gt; KickService(&lt;span class="str"&gt;&amp;quot;RemoteRegistry&amp;quot;&lt;/span&gt;)        &lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkAssignment()&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Ensure that the client is assigned to a site if its not assigned to any&lt;/span&gt;&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;Checking to make sure SMS Client has site assignment&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt; ISmsClient = CreateObject (&lt;span class="str"&gt;&amp;quot;Microsoft.SMS.Client&amp;quot;&lt;/span&gt;)&lt;br /&gt;        AssignedSite = ISmsClient.GetAssignedSite&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; Len(AssignedSite &amp;amp; &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&amp;gt;0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              logfile.writeline &lt;span class="str"&gt;&amp;quot;Client is not assigned, attempting to AutoDiscover and set&amp;quot;&lt;/span&gt;&lt;br /&gt;              ISmsClient.EnableAutoAssignment 1&lt;br /&gt;            DiscoveredSite = ISmsClient.AutoDiscoverSite&lt;br /&gt;            ISmsClient.SetAssignedSite DiscoveredSite,0&lt;br /&gt;            logfile.writeline &lt;span class="str"&gt;&amp;quot;Client is now assigned to &amp;quot;&lt;/span&gt; &amp;amp; ISmsClient.GetAssignedSite&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;Client is already assigned to &amp;quot;&lt;/span&gt; &amp;amp; ISmsClient.GetAssignedSite&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' KickService function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;Function&lt;/span&gt; KickService(servicename)&lt;br /&gt;  &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;  logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside KickService&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Results, wmi, Service, returncode, Service2, Started&lt;br /&gt;          Results = ServiceState(servicename)&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;servicename = &amp;quot;&lt;/span&gt; &amp;amp; servicename&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;Results = &amp;quot;&lt;/span&gt; &amp;amp; Results&lt;br /&gt;          &lt;span class="kwrd"&gt;set&lt;/span&gt; wmi = getobject(&lt;span class="str"&gt;&amp;quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&amp;quot;&lt;/span&gt;)&lt;br /&gt;          &lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; LCase(Results) = LCase(&lt;span class="str"&gt;&amp;quot;Running&amp;quot;&lt;/span&gt;)&lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;set&lt;/span&gt; Results = wmi.execquery(&lt;span class="str"&gt;&amp;quot;select state from win32_service where name='&amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot;'&amp;quot;&lt;/span&gt;)&lt;br /&gt;            &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; Service &lt;span class="kwrd"&gt;In&lt;/span&gt; Results&lt;br /&gt;                &lt;span class="rem"&gt;' Start service&lt;/span&gt;&lt;br /&gt;                  returncode = Service.StartService&lt;br /&gt;                  logfile.writeline &lt;span class="str"&gt;&amp;quot;returncode = &amp;quot;&lt;/span&gt; &amp;amp; returncode&lt;br /&gt;                  &lt;span class="kwrd"&gt;if&lt;/span&gt; returncode &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                          &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                              logfile.writeline &lt;span class="str"&gt;&amp;quot;SMS Client Service Failure &amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot; failed to start on &amp;quot;&lt;/span&gt; &amp;amp; CompName&lt;br /&gt;                            &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;Start Service Error&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;SMS Client Service Failure &amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot; failed to start on &amp;quot;&lt;/span&gt; &amp;amp; CompName)&lt;br /&gt;                            &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;                            logfile.writeline &lt;span class="str"&gt;&amp;quot;Quiting Script&amp;quot;&lt;/span&gt;&lt;br /&gt;                            WScript.Quit&lt;br /&gt;                        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                            logfile.writeline &lt;span class="str"&gt;&amp;quot;Displaying message to user - Error starting service your Windows Management Service (&amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot;) - &lt;br /&gt;&lt;br /&gt;Call The Help Desk immediately&amp;quot;&lt;/span&gt;&lt;br /&gt;                            msgbox &lt;span class="str"&gt;&amp;quot;Error starting service your Windows Management Service (&amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot;) - Call The Help Desk immediately&amp;quot;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;                            logfile.writeline &lt;span class="str"&gt;&amp;quot;Quiting Script&amp;quot;&lt;/span&gt;&lt;br /&gt;                            WScript.Quit&lt;br /&gt;                        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;end&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;Do&lt;/span&gt; &lt;span class="kwrd"&gt;Until&lt;/span&gt; Started = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'IMPORTANT! &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Adjust sleep as necessary, but do *not* remove it! &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;IMPORTANT!&lt;/span&gt;&lt;br /&gt;                    logfile.writeline &lt;span class="str"&gt;&amp;quot;Sleeping for 2 seconds...&amp;quot;&lt;/span&gt;&lt;br /&gt;                    logfile.writeline &lt;span class="str"&gt;&amp;quot;Use the below text to see how many times the script looped to start the Service&amp;quot;&lt;/span&gt;&lt;br /&gt;                     WScript.Sleep 2000 &lt;span class="rem"&gt;'Sleep for 2 Seconds                    &lt;/span&gt;&lt;br /&gt;                     &lt;span class="kwrd"&gt;set&lt;/span&gt; Results = wmi.execquery(&lt;span class="str"&gt;&amp;quot;select state from win32_service where name='&amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot;'&amp;quot;&lt;/span&gt;)&lt;br /&gt;                      &lt;span class="kwrd"&gt;for&lt;/span&gt; &lt;span class="kwrd"&gt;each&lt;/span&gt; Service2 &lt;span class="kwrd"&gt;In&lt;/span&gt; Results&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt; lcase(Service2.State) = lcase(&lt;span class="str"&gt;&amp;quot;Running&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                       logfile.writeline &lt;span class="str"&gt;&amp;quot;Started = &amp;quot;&lt;/span&gt; &amp;amp; Started&lt;br /&gt;                           Started = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;                       &lt;span class="kwrd"&gt;end&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                      &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;Loop&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;  &lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' ServiceState subprocedure&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Function&lt;/span&gt; ServiceState(servicename)&lt;br /&gt;      &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside ServiceState&amp;quot;&lt;/span&gt;&lt;br /&gt;      logfile.WriteLine &lt;span class="str"&gt;&amp;quot;Checking &amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot; service&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Dim&lt;/span&gt; wmi, Results, Service, StateResults, StartMode&lt;br /&gt;      &lt;span class="kwrd"&gt;set&lt;/span&gt; wmi = getobject(&lt;span class="str"&gt;&amp;quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &lt;span class="kwrd"&gt;set&lt;/span&gt; Results = wmi.execquery(&lt;span class="str"&gt;&amp;quot;select state from win32_service where name='&amp;quot;&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;&amp;quot;'&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; Service &lt;span class="kwrd"&gt;In&lt;/span&gt; Results&lt;br /&gt;        StateResults = Service.State&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;StateResults = &amp;quot;&lt;/span&gt; &amp;amp; StateResults&lt;br /&gt;    &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      ServiceState = StateResults&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' AdvCliInst subprocedure&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Function&lt;/span&gt; AdvCliInst(ComSpec)&lt;br /&gt;      &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside AdvCliInst&amp;quot;&lt;/span&gt;&lt;br /&gt;      logfile.WriteLine &lt;span class="str"&gt;&amp;quot;Calling Bits Check&amp;quot;&lt;/span&gt;&lt;br /&gt;      objCurTime = Time()&lt;br /&gt;      objCurHour = Hour(objCurTime)&lt;br /&gt;      objCurMin = Minute(objCurTime)+5&lt;br /&gt;      objInstallTime = objCurHour &amp;amp; &lt;span class="str"&gt;&amp;quot;:&amp;quot;&lt;/span&gt; &amp;amp; objCurMin&lt;br /&gt;      &lt;span class="kwrd"&gt;Call&lt;/span&gt; checkBITSrunning()&lt;br /&gt;      &lt;span class="kwrd"&gt;Dim&lt;/span&gt; smsinstall, WshShell, InstallArgs&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; WshShell = WScript.CreateObject(&lt;span class="str"&gt;&amp;quot;WScript.Shell&amp;quot;&lt;/span&gt;)&lt;br /&gt;      ComSpec = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;&amp;quot;%COMSPEC%&amp;quot;&lt;/span&gt;)&lt;br /&gt;      &lt;span class="kwrd"&gt;If&lt;/span&gt; ComSpec = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;            logfile.writeline &lt;span class="str"&gt;&amp;quot;SMS Client Installation Failure&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;The SMS Client failed to Install On &amp;quot;&lt;/span&gt; &amp;amp; CompName&lt;br /&gt;            &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;SMS Client Installation Failure&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;The SMS Client failed to Install On &amp;quot;&lt;/span&gt; &amp;amp; CompName)&lt;br /&gt;            &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;            logfile.writeline &lt;span class="str"&gt;&amp;quot;Exiting Script Processing&amp;quot;&lt;/span&gt;&lt;br /&gt;            WScript.Quit&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;            logfile.writeline &lt;span class="str"&gt;&amp;quot;Displaying Message to user - Windows Management Service Installation Failed.  Please contact The Help Desk&amp;quot;&lt;/span&gt;&lt;br /&gt;            MsgBox &lt;span class="str"&gt;&amp;quot;Windows Management Service Installation Failed.  Please contact The Help Desk&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;            logfile.writeline &lt;span class="str"&gt;&amp;quot;Exiting Script Processing&amp;quot;&lt;/span&gt;&lt;br /&gt;            WScript.Quit&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;          &lt;br /&gt;      &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;      InstallArgs = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named.Exists(&lt;span class="str"&gt;&amp;quot;params&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;params&amp;quot;&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                   InstallArgs = Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;params&amp;quot;&lt;/span&gt;)&lt;br /&gt;                   logfile.writeline = &lt;span class="str"&gt;&amp;quot;InstallArgs = &amp;quot;&lt;/span&gt; &amp;amp; InstallArgs&lt;br /&gt;              &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; Exist (Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;smsserver&amp;quot;&lt;/span&gt;) &amp;amp; &lt;span class="str"&gt;&amp;quot;\SMSClient\ccmsetup.exe&amp;quot;&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'smsinstall = ComSpec &amp;amp; &amp;quot; /c \\&amp;quot; &amp;amp; Wscript.Arguments.Named(&amp;quot;smsserver&amp;quot;) &amp;amp; &amp;quot;\SMSClient\ccmsetup.exe&amp;quot; &amp;amp; InstallArgs &lt;/span&gt;&lt;br /&gt;        smsinstall = &lt;span class="str"&gt;&amp;quot;at &amp;quot;&lt;/span&gt; &amp;amp; objInstallTime &amp;amp; &lt;span class="str"&gt;&amp;quot; \\&amp;quot;&lt;/span&gt; &amp;amp; Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;smsserver&amp;quot;&lt;/span&gt;) &amp;amp; &lt;span class="str"&gt;&amp;quot;\SMSClient\ccmsetup.exe&amp;quot;&lt;/span&gt; &amp;amp; InstallArgs&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;Calling SCCM Client installation with below command line:&amp;quot;&lt;/span&gt;&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;smsinstall = &amp;quot;&lt;/span&gt; &amp;amp; smsinstall&lt;br /&gt;      &lt;span class="rem"&gt;' Run SMS Client Installation&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;SMS Install&amp;quot;&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;&amp;quot; -Installing SCCM Client as &amp;quot;&lt;/span&gt; &amp;amp; smsinstall)&lt;br /&gt;        WshShell.Run smsinstall,0,&lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;        logfile.WriteLine &lt;span class="str"&gt;&amp;quot;Cannot Find SCCM client installer&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;SMS Installer Missing&amp;quot;&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;&amp;quot; -&amp;quot;&lt;/span&gt; &amp;amp; Wscript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;smsserver&amp;quot;&lt;/span&gt;) &amp;amp; &lt;span class="str"&gt;&amp;quot;\SMSClient\ccmsetup.exe&amp;quot;&lt;/span&gt;)&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;      &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' GetDomainRole function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetDomainRole&lt;br /&gt;      &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside GetDomainRole&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Dim&lt;/span&gt; domainroles, wmi, domainrole&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; wmi = GetObject(&lt;span class="str"&gt;&amp;quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&amp;quot;&lt;/span&gt;)&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; domainroles = wmi.ExecQuery(&lt;span class="str"&gt;&amp;quot;SELECT DomainRole FROM Win32_ComputerSystem&amp;quot;&lt;/span&gt;)&lt;br /&gt;      &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; domainrole &lt;span class="kwrd"&gt;in&lt;/span&gt; domainroles&lt;br /&gt;        GetDomainRole = domainrole.DomainRole&lt;br /&gt;        logfile.writeline &lt;span class="str"&gt;&amp;quot;GetDomainRole = &amp;quot;&lt;/span&gt; &amp;amp; GetDomainRole&lt;br /&gt;      &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; domainroles = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; wmi = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' EmailMessage subprocedure&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Function&lt;/span&gt; EmailMessage(Subject, Body)&lt;br /&gt;      &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside EmailMessage&amp;quot;&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Email Subject: &amp;quot;&lt;/span&gt; &amp;amp; Subject&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Email Body: &amp;quot;&lt;/span&gt; &amp;amp; Body&lt;br /&gt;      &lt;span class="kwrd"&gt;Dim&lt;/span&gt; objEmail, objemailfrom&lt;br /&gt;          &lt;span class="rem"&gt;' email using a generic user account as system is being booted up and user may not have logged on yet&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; objEmail = CreateObject(&lt;span class="str"&gt;&amp;quot;CDO.Message&amp;quot;&lt;/span&gt;)&lt;br /&gt;      objemailfrom = WScript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;smsserver&amp;quot;&lt;/span&gt;) &amp;amp; &lt;span class="str"&gt;&amp;quot;@company.com&amp;quot;&lt;/span&gt;&lt;br /&gt;      objEmail.From = objemailfrom&lt;br /&gt;      objEmail.&lt;span class="kwrd"&gt;To&lt;/span&gt; = WScript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;email&amp;quot;&lt;/span&gt;)&lt;br /&gt;      objEmail.CC = WScript.Arguments.Named(&lt;span class="str"&gt;&amp;quot;email1&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;span class="rem"&gt;'      objEmail.To = &amp;quot;smsadmins@company.com&amp;quot;&lt;/span&gt;&lt;br /&gt;      objEmail.Subject = Subject&lt;br /&gt;      objEmail.Textbody = Body&lt;br /&gt;      objEmail.Configuration.Fields.Item _&lt;br /&gt;      (&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/sendusing&amp;quot;&lt;/span&gt;) = 2&lt;br /&gt;      objEmail.Configuration.Fields.Item _&lt;br /&gt;      (&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&amp;quot;&lt;/span&gt;) = _&lt;br /&gt;      &lt;span class="str"&gt;&amp;quot;smtp.company.com&amp;quot;&lt;/span&gt; &lt;br /&gt;      objEmail.Configuration.Fields.Item _&lt;br /&gt;      (&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&amp;quot;&lt;/span&gt;) = 25&lt;br /&gt;      objEmail.Configuration.Fields.Update&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Sending Email&amp;quot;&lt;/span&gt;&lt;br /&gt;      objEmail.Send&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; objEmail = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' ShowFileAccessInfo function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Function&lt;/span&gt; ShowFileAccessInfo(filespec, Compname)&lt;br /&gt;      &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside ShowFileAccessInfo&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Dim&lt;/span&gt; fso, f, filespec_date, FSpace&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; fso = CreateObject(&lt;span class="str"&gt;&amp;quot;Scripting.FileSystemObject&amp;quot;&lt;/span&gt;)&lt;br /&gt;      &lt;span class="kwrd"&gt;If&lt;/span&gt; fso.FileExists(filespec) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;Set&lt;/span&gt; f = fso.GetFile(filespec)&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;f = &amp;quot;&lt;/span&gt; &amp;amp; f&lt;br /&gt;          filespec_date = f.DateLastModified&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;filespec_date = &amp;quot;&lt;/span&gt; &amp;amp; filespec_date&lt;br /&gt;          FSpace = Instr(filespec_date,&lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt;) - 1&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;FSpace = &amp;quot;&lt;/span&gt; &amp;amp; FSpace&lt;br /&gt;          ShowFileAccessInfo = Left(filespec_date,FSpace)&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;&amp;quot;ShowFileAccessInfo = &amp;quot;&lt;/span&gt; &amp;amp; ShowFileAccessInfo&lt;br /&gt;      &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;              logfile.writeline &lt;span class="str"&gt;&amp;quot;File Missing - &amp;quot;&lt;/span&gt; &amp;amp; filespec &amp;amp; &lt;span class="str"&gt;&amp;quot; is missing On &amp;quot;&lt;/span&gt; &amp;amp; Compname&lt;br /&gt;              &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;&amp;quot;File Missing&amp;quot;&lt;/span&gt;, filespec &amp;amp; &lt;span class="str"&gt;&amp;quot; is missing On &amp;quot;&lt;/span&gt; &amp;amp; Compname)&lt;br /&gt;              logfile.writeline &lt;span class="str"&gt;&amp;quot;Exiting Script Processing&amp;quot;&lt;/span&gt;&lt;br /&gt;              WScript.Quit&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' Destroy any objects&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================  &lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Cleanup&lt;br /&gt;      &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;&amp;quot;Inside Cleanup&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; WshShell = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; ComSpec = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; windir = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; strCompName = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;Set&lt;/span&gt; SmsClient = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;br /&gt;  ' =====================================================&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8682036466319580893?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8682036466319580893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8682036466319580893' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8682036466319580893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8682036466319580893'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/12/client-health-check-script-take-2.html' title='Client Health Check Script- Take 2'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-3998954429880944206</id><published>2008-11-07T08:00:00.000-08:00</published><updated>2008-11-08T08:39:27.814-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Interactive Services Detection Service</title><content type='html'>&lt;p&gt;Yesterday another admin notified me that his Vista machine prompted him before showing a message from a program I had distributed via SCCM.&amp;#160; The name of the prompt was &amp;quot;Interactive Services Dialog Detection&amp;quot;, and it was requesting to show him a message.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_pyuwcAiNyRk/SRGzsg3IjaI/AAAAAAAABK4/HY8fJn8gm7A/s1600-h/image001%5B13%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="314" alt="image001" src="http://lh3.ggpht.com/_pyuwcAiNyRk/SRGzukgf0FI/AAAAAAAABK8/G1AAUw9g0hw/image001_thumb%5B9%5D.png?imgmax=800" width="373" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Selecting &amp;quot;Show me the message&amp;quot; hides the desktop and allows the user to see the message.&amp;#160; After viewing the message, the user had to click on &amp;quot;Return Now&amp;quot; to get back to the desktop.&lt;/p&gt;  &lt;p&gt;This event was a surprise to me.&amp;#160; I've been running Vista since it came out and the program we advertised has been advertised for the last 3 years, and we run it every month.&amp;#160; After researching this service, I discovered that it is a new security feature in Vista.&amp;#160; Designed to protect users by intercepting messages run under another security context.&amp;#160; In this case, the program is advertised to run whether or not a user is logged on, but allow users to interact with the program.&amp;#160; When these options are chosen in SCCM, the program runs under the machine account as a service.&amp;#160; Since this program pops up a message, we chose the option to allow users to interact so they can see the message and click okay on it.&amp;#160; Vista may see this as a security risk if the Interactive Services Detection service is running.&amp;#160; We checked 4 different Vista machines, and it appears the default behavior is the service is Stopped and set to Manual.&amp;#160;&amp;#160; UAC did not appear to have any affect on this service.&amp;#160; Apparently this admin had done something else to set this service to Running.&amp;#160; There are several available ways to resolve this issue:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Choose the option to run the program only when a user is logged on, and run it as the user.&lt;/li&gt;    &lt;li&gt;Don't make the program interactive (user will not see the program).&lt;/li&gt;    &lt;li&gt;Stop the Interactive Services Detection service.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ignore it.&amp;#160; Vista is doing it's job of being safer.&amp;#160; Users may have to click an extra prompt.&lt;/p&gt;  &lt;p&gt;I don't really recommend stopping or disabling the service since that is a built in security feature of Vista.&amp;#160; But it will prevent the prompt from appearing if desired.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-3998954429880944206?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/3998954429880944206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=3998954429880944206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3998954429880944206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3998954429880944206'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/11/interactive-services-detection-service.html' title='Interactive Services Detection Service'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_pyuwcAiNyRk/SRGzukgf0FI/AAAAAAAABK8/G1AAUw9g0hw/s72-c/image001_thumb%5B9%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-913943067729243468</id><published>2008-11-05T06:21:00.001-08:00</published><updated>2008-11-05T06:53:44.477-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Collections'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Organize Collections with Drag and Drop</title><content type='html'>&lt;p&gt;One of the plans we've had since I took over the administration of Configuration Manager is to organize the objects in the admin console.&amp;#160; SCCM makes it easier than SMS since it supports drag and drop.&amp;#160; The catch is that it only supports it with certain types of objects.&amp;#160; Collections is one of the object types that doesn't support drag and drop.&amp;#160; The only way I found to reorganize collection objects was to make a link of a collection to a second collection.&amp;#160; Making this link actually makes a 2nd instance of the collection appear in the hierarchy.&amp;#160; Then you can go back and safely delete the original collection.&amp;#160; The other option is to use a Microsoft provided SMS tool called CollTree.&amp;#160; Yes, the program does work with SCCM.&amp;#160; After downloading the SMS 2003 SDK you can compile the executable from \Program Files\Microsoft Systems Management Server 2003 SDK V3\Samples\VB\CollTree\CollTree.vbp&amp;#160; It's not as great as if Microsoft had built this functionality into the Admin Console, but at least it works!&amp;#160; Download a compiled version of CollTree here: &lt;a href="http://myitforum.com/cs2/blogs/bleary/attachment/68439.ashx"&gt;http://myitforum.com/cs2/blogs/bleary/attachment/68439.ashx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Credits to Brian Leary for pointing out this useful tool: &lt;a href="http://myitforum.com/cs2/blogs/bleary/archive/2006/12/01/colltree-drag-and-drop-collections-for-sms-2003.aspx"&gt;http://myitforum.com/cs2/blogs/bleary/archive/2006/12/01/colltree-drag-and-drop-collections-for-sms-2003.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-913943067729243468?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/913943067729243468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=913943067729243468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/913943067729243468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/913943067729243468'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/11/organize-collections-with-drag-and-drop.html' title='Organize Collections with Drag and Drop'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-6878729606746641506</id><published>2008-10-23T07:22:00.001-07:00</published><updated>2008-10-23T07:27:03.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='BITS'/><category scheme='http://www.blogger.com/atom/ns#' term='Background Intelligent Transfer Service'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Upgrade BITS</title><content type='html'>&lt;p&gt;As companies move from SMS 2003 to SCCM one of the items frequently mentioned is the desire to predeploy the latest version of BITS (Background Intelligent Transfer Service).&amp;#160; This makes it possible to deploy the client without requiring a reboot.&amp;#160; However, Microsoft didn't really provide a method for doing the BITS deployment.&amp;#160; So I wrote my own.&amp;#160; Download the latest versions of BITS from: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=3EE866A0-3A09-4FDF-8BDB-C906850AB9F2&amp;amp;displaylang=en&amp;amp;displaylang=en" target="_blank"&gt;2000&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a064bf14-e54c-4e8c-85e7-1e3be1628b2d&amp;amp;DisplayLang=en" target="_blank"&gt;XP&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=25490249-F820-4AD9-8F38-313D8982D6FA&amp;amp;displaylang=en" target="_blank"&gt;2003&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=4D160634-CA5E-4EAD-8154-7DAC7625E701&amp;amp;displaylang=en" target="_blank"&gt;x64- XP and 2003&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;They will need to be in a subdirectory named bin of this script.&amp;#160; The script will require a drive letter to run, so when you create the program be sure to specify that option.&amp;#160; The nice thing about this script is that you can deploy to everybody, and it will only upgrade those that need it.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'==========================================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' NAME: Install_Bits.vbs&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' AUTHOR: Bill Phillips , ESRI&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' DATE  : 10/22/2008&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' COMMENT: &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'==========================================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; strOSName, strSPName,  strComputerType, systemroot, detectfile&lt;br /&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; objFile, strFileVersion, strInstallFile&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objShell = CreateObject (&lt;span class="str"&gt;&amp;quot;Wscript.Shell&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; objEnv = objShell.Environment(&lt;span class="str"&gt;&amp;quot;Process&amp;quot;&lt;/span&gt;)&lt;br /&gt;systemroot = objEnv(&lt;span class="str"&gt;&amp;quot;SYSTEMROOT&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objFSO = CreateObject(&lt;span class="str"&gt;&amp;quot;Scripting.FileSystemObject&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objExp = &lt;span class="kwrd"&gt;new&lt;/span&gt; regexp  &lt;span class="rem"&gt;'Create the RegExp object&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;detectOS()&lt;br /&gt;detectFileversion(systemroot &amp;amp; &lt;span class="str"&gt;&amp;quot;\system32\QMgr.dll&amp;quot;&lt;/span&gt;)&lt;br /&gt;compareBITSVersion(strFileVersion)&lt;br /&gt;installBITS()&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;' ********************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'Detect OS Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'********************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; detectOS()&lt;br /&gt;&lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; objOS &lt;span class="kwrd"&gt;In&lt;/span&gt; GetObject(&lt;span class="str"&gt;&amp;quot;winmgmts:&amp;quot;&lt;/span&gt;).InstancesOf (&lt;span class="str"&gt;&amp;quot;Win32_OperatingSystem&amp;quot;&lt;/span&gt;)&lt;br /&gt;    strOSName = objOS.Caption&lt;br /&gt;    strSPName = &lt;span class="str"&gt;&amp;quot;SP&amp;quot;&lt;/span&gt; &amp;amp; objOS.ServicePackMajorVersion&lt;br /&gt;&lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; objComputer &lt;span class="kwrd"&gt;In&lt;/span&gt; GetObject(&lt;span class="str"&gt;&amp;quot;winmgmts:&amp;quot;&lt;/span&gt;).InstancesOf (&lt;span class="str"&gt;&amp;quot;Win32_ComputerSystem&amp;quot;&lt;/span&gt;)&lt;br /&gt; strComputerType = objComputer.systemtype&lt;br /&gt;&lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;'need to normalize data (too many different versions of windows)&lt;/span&gt;&lt;br /&gt;    objExp.Pattern = &lt;span class="str"&gt;&amp;quot;2000&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; objEXP.Test (strOSName) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;        strOSName = &lt;span class="str"&gt;&amp;quot;win2k&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    objExp.Pattern = &lt;span class="str"&gt;&amp;quot;XP&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; objEXP.Test (strOSName) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;        strOSName = &lt;span class="str"&gt;&amp;quot;winXP&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    objExp.Pattern = &lt;span class="str"&gt;&amp;quot;2003&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; objEXP.Test (strOSName) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;        strOSName = &lt;span class="str"&gt;&amp;quot;w2k3&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    objExp.Pattern = &lt;span class="str"&gt;&amp;quot;Vista&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; objEXP.Test (strOSName) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;        strOSName = &lt;span class="str"&gt;&amp;quot;Vista&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    objExp.Pattern = &lt;span class="str"&gt;&amp;quot;2008&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; objEXP.Test (strOSName) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;         strOSName = &lt;span class="str"&gt;&amp;quot;w2k8&amp;quot;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; detectFileversion(detectfile)&lt;br /&gt;&lt;span class="kwrd"&gt;If&lt;/span&gt; objFSO.FileExists(detectfile) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objFile = objFSO.GetFile(detectfile)&lt;br /&gt;strFileVersion = objFSO.GetFileVersion(detectfile)&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; compareBITSVersion(strFileVersion)&lt;br /&gt;    &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; strFileVersion&lt;br /&gt;        &lt;span class="rem"&gt;' Case for Windows 2000 Server and Pro&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.6.2600.1596&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'wscript.echo &amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;        WScript.quit&lt;br /&gt;        WScript.Sleep 1&lt;br /&gt;        &lt;br /&gt;        &lt;span class="rem"&gt;' Case for Windows XP SP2&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Case &amp;quot;6.7.2600.3143&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Fake&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'wscript.echo &amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;        WScript.quit&lt;br /&gt;        WScript.Sleep 1&lt;br /&gt;        &lt;br /&gt;        &lt;span class="rem"&gt;' Case for Windows XP SP3&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.7.2600.5512&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'wscript.echo &amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;        WScript.quit&lt;br /&gt;        WScript.Sleep 1&lt;br /&gt;        &lt;br /&gt;        &lt;span class="rem"&gt;' Case for Server 2003 SP1&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.6.3790.1830&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'wscript.echo &amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;        WScript.quit&lt;br /&gt;        WScript.Sleep 1&lt;br /&gt;        &lt;br /&gt;        &lt;span class="rem"&gt;' Case for Server 2003 SP2&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;6.6.3790.3959&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'wscript.echo &amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;        WScript.quit&lt;br /&gt;        WScript.Sleep 1&lt;br /&gt;        &lt;br /&gt;        &lt;span class="rem"&gt;' Case for Vista RTM&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;7.0.6000.16386&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'wscript.echo &amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;        WScript.quit&lt;br /&gt;        WScript.Sleep 1&lt;br /&gt;        &lt;br /&gt;        &lt;span class="rem"&gt;' Case for Vista and Server 2008 SP1 x32 &amp;amp; x64&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'Case &amp;quot;7.0.6001.18000&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;fake&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'wscript.echo &amp;quot;BitsVersion Passed&amp;quot;&lt;/span&gt;&lt;br /&gt;        WScript.quit&lt;br /&gt;        WScript.Sleep 1        &lt;br /&gt;        &lt;span class="rem"&gt;' Case for failure&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;'WScript.Echo &amp;quot;Bits Failed&amp;quot;&lt;/span&gt;&lt;br /&gt;        selectBITSinstall()&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; selectBITSinstall()&lt;br /&gt;    &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; strComputerType&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;x64-based PC&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; strOSName&lt;br /&gt;                &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;w2k3&amp;quot;&lt;/span&gt;&lt;br /&gt;                strInstallFile = &lt;span class="str"&gt;&amp;quot;WindowsServer2003.WindowsXP-KB923845-x64-ENU.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;winXP&amp;quot;&lt;/span&gt;&lt;br /&gt;                strInstallFile = &lt;span class="str"&gt;&amp;quot;WindowsServer2003.WindowsXP-KB923845-x64-ENU.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;X86-based PC&amp;quot;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; strOSName&lt;br /&gt;                 &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;win2k&amp;quot;&lt;/span&gt;&lt;br /&gt;                 strInstallFile = &lt;span class="str"&gt;&amp;quot;Windows2000-KB842773-x86-ENU.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;winXP&amp;quot;&lt;/span&gt;&lt;br /&gt;                 strInstallFile = &lt;span class="str"&gt;&amp;quot;WindowsXP-KB923845-x86-ENU.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;w2k3&amp;quot;&lt;/span&gt;&lt;br /&gt;                 strInstallFile = &lt;span class="str"&gt;&amp;quot;WindowsServer2003-KB923845-x86-ENU.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;' no match found so quitting&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;If&lt;/span&gt; strInstallFile = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;WScript.Quit&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; installBITS()&lt;br /&gt;&lt;span class="rem"&gt;'Turn off prompt for unknown locations&lt;/span&gt;&lt;br /&gt;objEnv(&lt;span class="str"&gt;&amp;quot;SEE_MASK_NOZONECHECKS&amp;quot;&lt;/span&gt;) = 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;objShell.Run (&lt;span class="str"&gt;&amp;quot;bin\&amp;quot;&lt;/span&gt; &amp;amp; strInstallFile &amp;amp; &lt;span class="str"&gt;&amp;quot; /passive /norestart /overwriteoem&amp;quot;&lt;/span&gt;)&lt;span class="rem"&gt;', 1, True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;'Turn prompt back On&lt;/span&gt;&lt;br /&gt;objEnv.Remove(&lt;span class="str"&gt;&amp;quot;SEE_MASK_NOZONECHECKS&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-6878729606746641506?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/6878729606746641506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=6878729606746641506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6878729606746641506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6878729606746641506'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/10/upgrade-bits.html' title='Upgrade BITS'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-2465934735761615146</id><published>2008-10-22T08:01:00.001-07:00</published><updated>2009-01-13T08:23:21.056-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Client Health Check Script</title><content type='html'>&lt;p&gt;See updated post: &lt;a href="http://smsimpossible.blogspot.com/2008/12/client-health-check-script-take-2.html"&gt;http://smsimpossible.blogspot.com/2008/12/client-health-check-script-take-2.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1e used to have a client health check script for sms 2003.  The script would reinstall the client or force a repair depending on what part of the check it failed.  Since the release of SCCM they have not updated the script.  I believe the old script will probably still work just by changing the install directory, but I have a rewritten version of the script that we use so I'm providing it below.  I don't think there is anything wrong with posting this, but I will remove it if 1e asks me to do so. To use the script you must specify the siteserver.  Also the sccm/client directory must be shared out and the script will need to be modified to reflect the share directory.  After meeting these 2 requirements the script is usable.  You may also specify an smtp email server in the email section and who the email should be sent to. The siteserver and email recipient may be passed as arguments or hard coded into the script.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;'==========================================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' NAME: SCCM_Client_Health_Check.vbs&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' AUTHOR: Bill Phillips , ESRI&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' DATE  : 10/20/2008&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' COMMENT: Code rewrite for SCCM client taken from 1E ClientHealth Script for SMS client&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'==========================================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Dim&lt;/span&gt; smsserver, platform, email&lt;br /&gt;       &lt;span class="kwrd"&gt;Dim&lt;/span&gt; domainrole, ComSpec, diffdate, enddate, fso, filedate, SmsClient, returncode, Results&lt;br /&gt;       &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ISmsClient, DiscoveredSite, AssignedSite&lt;br /&gt;       &lt;span class="kwrd"&gt;Dim&lt;/span&gt; servicename, startdate, strMessage, strSMSPolEval, windir, wmi, colItems, wShShell, Compname, present, objShare&lt;br /&gt;       &lt;span class="kwrd"&gt;Dim&lt;/span&gt; BitsVersion, tempdir, logfile, logsize&lt;br /&gt;          &lt;br /&gt;       &lt;span class="kwrd"&gt;Set&lt;/span&gt; WshShell = WScript.CreateObject(&lt;span class="str"&gt;"WScript.Shell"&lt;/span&gt;)&lt;br /&gt;       WinDir = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;"%windir%"&lt;/span&gt;)&lt;br /&gt;       Compname = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;"%COMPUTERNAME%"&lt;/span&gt;)&lt;br /&gt;       ComSpec = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;"%COMSPEC%"&lt;/span&gt;)&lt;br /&gt;       tempdir = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;"%temp%"&lt;/span&gt;)&lt;br /&gt;      &lt;br /&gt;       &lt;span class="rem"&gt;'Set up the loggong&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Set&lt;/span&gt; fso = CreateObject(&lt;span class="str"&gt;"Scripting.FileSystemObject"&lt;/span&gt;)&lt;br /&gt;       &lt;span class="kwrd"&gt;Set&lt;/span&gt; logfile = fso.OpenTextFile(tempdir &amp;amp; &lt;span class="str"&gt;"\SCCM_Client_Health_Check.Log"&lt;/span&gt;,2,&lt;span class="kwrd"&gt;True&lt;/span&gt;)&lt;br /&gt;      &lt;br /&gt;  &lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;"####################################"&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;"Begining SCCM Client Health Check Script"&lt;/span&gt;&lt;br /&gt;      logfile.writeline &lt;span class="str"&gt;"####################################"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;'Either uncomment variables below or pass arguments to script:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'sccm_client_health_check.vbs /smsserver:smststserver /email:recepient@company.com&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'********************************************************HARD CODED COMMAND LINE OVERRIDES********************************************************    &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'***********************************************************UNCOMMENT ONLY IF NECESSARY***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'smsserver = "smststserver" 'Should reflect the PMP/PDP for each office&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'platform = "" 'No need to modify&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'Email = "recepient@company.com" 'Should be set to go to an alias that includes the needed peoeple.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'********************************************************HARD CODED COMMAND LINE OVERRIDES********************************************************    &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'***********************************************************UNCOMMENT ONLY IF NECESSARY***********************************************************&lt;/span&gt;&lt;br /&gt;checkSCCMserverCMD()&lt;br /&gt;checkPlatformCMD()&lt;br /&gt;checkEmailCMD()&lt;br /&gt;checkAdminShare()&lt;br /&gt;checkCCMSetupRunning()&lt;br /&gt;checkClient()&lt;br /&gt;checkLogsUpdate()&lt;br /&gt;checkBITSversion()&lt;br /&gt;checkServices()&lt;br /&gt;checkAssignment()&lt;br /&gt;   logfile.writeline &lt;span class="str"&gt;"Cleaning Up"&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;   logfile.writeline &lt;span class="str"&gt;"Ending Processing"&lt;/span&gt;&lt;br /&gt;WScript.Quit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;'Check to see if SCCM server is specifed as an argument or hardcoded into script&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkSCCMserverCMD()&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; smsserver = &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;          &lt;br /&gt;           &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named.Exists(&lt;span class="str"&gt;"smsserver"&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named(&lt;span class="str"&gt;"smsserver"&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;               logfile.writeline &lt;span class="str"&gt;"smsserver specified in command line is "&lt;/span&gt; &amp;amp; WScript.Arguments.Named(&lt;span class="str"&gt;"smsserver"&lt;/span&gt;)&lt;br /&gt;             &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;               logfile.writeline &lt;span class="str"&gt;"/smsserver parameter is the incorrect format. Please see documentation"&lt;/span&gt;&lt;br /&gt;                 WScript.Quit&lt;br /&gt;             &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                logfile.writeline &lt;span class="str"&gt;"Missing /smsserver: in command line"&lt;/span&gt;&lt;br /&gt;                 WScript.Quit&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;           logfile.WriteLine &lt;span class="str"&gt;"The SCCMserver hardcoded command line override specified as = "&lt;/span&gt; &amp;amp; smsserver&lt;br /&gt;       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkPlatformCMD()&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; platform = &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             domainrole = GetDomainRole()&lt;br /&gt;           &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named.Exists(&lt;span class="str"&gt;"platform"&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named(&lt;span class="str"&gt;"platform"&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                     platform = Wscript.Arguments.Named(&lt;span class="str"&gt;"platform"&lt;/span&gt;)&lt;br /&gt;                     logfile.WriteLine &lt;span class="str"&gt;"platform = "&lt;/span&gt; &amp;amp; platform&lt;br /&gt;                   &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(platform) = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(domainrole) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                       logfile.WriteLine &lt;span class="str"&gt;"System running is not the correct platform as specified"&lt;/span&gt;&lt;br /&gt;                       WScript.Quit&lt;br /&gt;                   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;           logfile.WriteLine &lt;span class="str"&gt;"platform hardcoded command line override specified as = "&lt;/span&gt; &amp;amp; platform&lt;br /&gt;           domainrole = GetDomainRole()&lt;br /&gt;               &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(Platform) = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(domainrole) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                   logfile.WriteLine &lt;span class="str"&gt;"System running is not the correct platform as specified"&lt;/span&gt;&lt;br /&gt;                   WScript.Quit&lt;br /&gt;               &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkEmailCMD()&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; email = &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;If&lt;/span&gt; WScript.Arguments.Named.Exists(&lt;span class="str"&gt;"email"&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;               email = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;           logfile.WriteLine (&lt;span class="str"&gt;"Email hardcoded command line override specified as = "&lt;/span&gt; &amp;amp; email)&lt;br /&gt;           &lt;span class="rem"&gt;'email = True  'uncomment if you use hardcoded email in script&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkAdminShare()&lt;br /&gt;       &lt;span class="rem"&gt;'Check for Admin$ - If not present then log&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Set&lt;/span&gt; wmi = getobject(&lt;span class="str"&gt;"winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"&lt;/span&gt;)&lt;br /&gt;       &lt;span class="kwrd"&gt;Set&lt;/span&gt; colItems = wmi.ExecQuery(&lt;span class="str"&gt;"Select * From Win32_Share"&lt;/span&gt;,,48)&lt;br /&gt;       present = &lt;span class="str"&gt;"FALSE"&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; objShare &lt;span class="kwrd"&gt;In&lt;/span&gt; colItems&lt;br /&gt;          &lt;span class="kwrd"&gt;If&lt;/span&gt; LCASE(objShare.Name) = &lt;span class="str"&gt;"admin$"&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             present = &lt;span class="str"&gt;"TRUE"&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; present &amp;lt;&amp;gt; &lt;span class="str"&gt;"TRUE"&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             logfile.writeline &lt;span class="str"&gt;"Sending email that Admin$ is missing"&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;"Admin$ Missing"&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;" does not have an Admin$."&lt;/span&gt;)&lt;br /&gt;          &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;             logfile.writeline &lt;span class="str"&gt;"Admin$ is missing."&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkCCMSetupRunning()&lt;br /&gt;       &lt;span class="rem"&gt;'Abort if ccmsetup running&lt;/span&gt;&lt;br /&gt;       Results = ServiceState(&lt;span class="str"&gt;"ccmsetup"&lt;/span&gt;)&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; LCase(Results) = LCase(&lt;span class="str"&gt;"Running"&lt;/span&gt;)&lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                   logfile.writeline &lt;span class="str"&gt;"Sending email that ccmsetup service is running and script is aborting"&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;"Aborting Client Installation"&lt;/span&gt;, &lt;span class="str"&gt;"ccmsetup is running on "&lt;/span&gt; &amp;amp; CompName)&lt;br /&gt;                   WScript.Quit&lt;br /&gt;              &lt;br /&gt;                   logfile.writeline &lt;span class="str"&gt;"Exiting script processing because ccmsetup service is running"&lt;/span&gt;&lt;br /&gt;                   WScript.Quit&lt;br /&gt;              &lt;br /&gt;           &lt;span class="kwrd"&gt;Elseif&lt;/span&gt; LCase(Results) = LCase(&lt;span class="str"&gt;"Stopped"&lt;/span&gt;)&lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;               logfile.WriteLine &lt;span class="str"&gt;"ccmsetup service is in a stopped state, attempting to start"&lt;/span&gt;&lt;br /&gt;               KickService(&lt;span class="str"&gt;"ccmsetup"&lt;/span&gt;)&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkClient()&lt;br /&gt;       &lt;span class="rem"&gt;' SMS Client COM object available, Version Installed, &amp;amp; WMI Namespace available&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;Set&lt;/span&gt; SmsClient = GetObject(&lt;span class="str"&gt;"winmgmts:ROOT/CCM:SMS_Client=@"&lt;/span&gt;)&lt;br /&gt;         &lt;span class="kwrd"&gt;If&lt;/span&gt; Err &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;           &lt;span class="rem"&gt;'Advanced client not installed&lt;/span&gt;&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;"Advanced Client not installed, calling AdvCliInst to install the client"&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;Call&lt;/span&gt; AdvCliInst(ComSpec)&lt;br /&gt;           WScript.Sleep 10000&lt;br /&gt;           &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;           WScript.Quit&lt;br /&gt;         &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;             logfile.writeline SmsClient.ClientVersion&lt;br /&gt;           &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; SmsClient.ClientVersion&lt;br /&gt;&lt;span class="rem"&gt;'IMPORTANT! &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Adjust CASE as necessary, but do *not* remove it! &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;IMPORTANT!&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;'Alter this by adding an additional CASE statement followed by the version in quotes for each SMS client&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;'version which is allowed in the hierarchy. This can also be used as an additional cleanup method after&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;'upgrading clients for those that might have missed this via software distribution  &lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;'Case "2.50.3174.1018"&lt;/span&gt;&lt;br /&gt;         &lt;span class="rem"&gt;'Case "2.50.4160.2000" 'SP2 Version&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"4.00.6221.1000"&lt;/span&gt; &lt;span class="rem"&gt;'configMGR sp1 client&lt;/span&gt;&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"SMS Client Version Passed"&lt;/span&gt;&lt;br /&gt;           WScript.Sleep 1&lt;br /&gt;             &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"Calling AdvCliInst routine to install SMS Advanced client"&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;Call&lt;/span&gt; AdvCliInst(ComSpec)&lt;br /&gt;               WScript.Sleep 10000&lt;br /&gt;               &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;               WScript.Quit&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkLogsUpdate()&lt;br /&gt;         &lt;span class="kwrd"&gt;Set&lt;/span&gt; SmsClient = GetObject(&lt;span class="str"&gt;"winmgmts://./root/ccm:SMS_Client"&lt;/span&gt;)&lt;br /&gt;       &lt;span class="rem"&gt;' SMS Logs recently updated&lt;/span&gt;&lt;br /&gt;          logfile.writeline &lt;span class="str"&gt;"Begining to evaluate "&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;"\system32\CCM\Logs\PolicyEvaluator.log"&lt;/span&gt;&lt;br /&gt;         strSMSPolEval = windir &amp;amp; &lt;span class="str"&gt;"\system32\CCM\Logs\PolicyEvaluator.log"&lt;/span&gt;&lt;br /&gt;         startdate = ShowFileAccessInfo(strSMSPolEval, Compname)&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"startdate = "&lt;/span&gt; &amp;amp; startdate&lt;br /&gt;         enddate = &lt;span class="kwrd"&gt;date&lt;/span&gt;()&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"enddate = "&lt;/span&gt;  &amp;amp; enddate&lt;br /&gt;  &lt;br /&gt;         &lt;span class="kwrd"&gt;If&lt;/span&gt; isDate(startdate) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;           diffdate = DateDiff(&lt;span class="str"&gt;"d"&lt;/span&gt;, startdate, enddate)&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;"diffdate = "&lt;/span&gt; &amp;amp; diffdate&lt;br /&gt;         &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;         &lt;span class="kwrd"&gt;If&lt;/span&gt; diffdate &amp;gt; 21 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"diffdate is greater than 21 days, sending email"&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(CompName &amp;amp; &lt;span class="str"&gt;" is out of date"&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;" has not updated is logs in 21 days or more - attempting client repair"&lt;/span&gt;)&lt;br /&gt;             &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"diffdate is greater than 21 days, attempting to repair SMS Client"&lt;/span&gt;&lt;br /&gt;                 smsClient.RepairClient&lt;br /&gt;                 wscript.quit&lt;br /&gt;         &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkBITSversion()&lt;br /&gt;      &lt;br /&gt;       &lt;span class="rem"&gt;'Check BITS version, email if out of date&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"Checking BITS version by looking at "&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;"\system32\QMgr.dll"&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; fso.FileExists(windir &amp;amp; &lt;span class="str"&gt;"\system32\QMgr.dll"&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;               BitsVersion = fso.GetFileVersion(windir &amp;amp; &lt;span class="str"&gt;"\system32\QMgr.dll"&lt;/span&gt;)&lt;br /&gt;               logfile.writeline &lt;span class="str"&gt;"BitsVersion is "&lt;/span&gt; &amp;amp; BitsVersion&lt;br /&gt;               &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; BitsVersion&lt;br /&gt;&lt;br /&gt;                 &lt;span class="rem"&gt;' Case for Windows 2000 Server and Pro&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"6.6.2600.1596"&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"BitsVersion Passed"&lt;/span&gt;&lt;br /&gt;                   WScript.Sleep 1&lt;br /&gt;                  &lt;br /&gt;                 &lt;span class="rem"&gt;' Case for Windows XP SP2&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"6.7.2600.3143"&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"BitsVersion Passed"&lt;/span&gt;&lt;br /&gt;                   WScript.Sleep 1&lt;br /&gt;&lt;br /&gt;                 &lt;span class="rem"&gt;' Case for Windows XP SP3&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"6.7.2600.5512"&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"BitsVersion Passed"&lt;/span&gt;&lt;br /&gt;                   WScript.Sleep 1&lt;br /&gt;                  &lt;br /&gt;                      &lt;span class="rem"&gt;' Case for Server 2003 SP1&lt;/span&gt;&lt;br /&gt;                          &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"6.6.3790.1830"&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"BitsVersion Passed"&lt;/span&gt;&lt;br /&gt;                   WScript.Sleep 1&lt;br /&gt;&lt;br /&gt;               &lt;span class="rem"&gt;' Case for Server 2003 SP2&lt;/span&gt;&lt;br /&gt;                          &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"6.6.3790.3959"&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"BitsVersion Passed"&lt;/span&gt;&lt;br /&gt;                   WScript.Sleep 1&lt;br /&gt;                  &lt;br /&gt;                 &lt;span class="rem"&gt;' Case for Vista&lt;/span&gt;&lt;br /&gt;                          &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"7.0.6000.16386"&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"BitsVersion Passed"&lt;/span&gt;&lt;br /&gt;                   WScript.Sleep 1&lt;br /&gt;&lt;br /&gt;                 &lt;span class="rem"&gt;' Case for Server 2008 SP1&lt;/span&gt;&lt;br /&gt;                          &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="str"&gt;"7.0.6001.18000"&lt;/span&gt;&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"BitsVersion Passed"&lt;/span&gt;&lt;br /&gt;                   WScript.Sleep 1&lt;br /&gt;                 &lt;br /&gt;&lt;br /&gt;                  &lt;span class="rem"&gt;' Case for failure&lt;/span&gt;&lt;br /&gt;                  &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                      &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                            logfile.writeline &lt;span class="str"&gt;"BITS is out of date, sending email"&lt;/span&gt;&lt;br /&gt;                           &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;"BITS out of date"&lt;/span&gt;, Compname &amp;amp; &lt;span class="str"&gt;" - BITS version is at "&lt;/span&gt; &amp;amp; BitsVersion)&lt;br /&gt;                       &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                           logfile.writeline &lt;span class="str"&gt;"BITS is out of date, exiting script processing"&lt;/span&gt;&lt;br /&gt;                           WScript.Quit&lt;br /&gt;                       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;               logfile.writeline &lt;span class="str"&gt;"Unable to process BITS version because "&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;"\system32\QMgr.dll is missing. Sending email."&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;"File Missing"&lt;/span&gt;, &lt;span class="str"&gt;"%system32%\QMgr.dll"&lt;/span&gt; &amp;amp; &lt;span class="str"&gt;" is missing on "&lt;/span&gt; &amp;amp; Compname)&lt;br /&gt;           &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;               logfile.writeline &lt;span class="str"&gt;"Unable to process BITS version because "&lt;/span&gt; &amp;amp; windir &amp;amp; &lt;span class="str"&gt;"\system32\QMgr.dll is missing. Exiting Script processing."&lt;/span&gt;&lt;br /&gt;               WScript.Quit&lt;br /&gt;           &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkServices()&lt;br /&gt;      &lt;br /&gt;       &lt;span class="rem"&gt;' SMS Agent Host Service started&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"Calling KickService"&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Call&lt;/span&gt; KickService(&lt;span class="str"&gt;"CcmExec"&lt;/span&gt;)&lt;br /&gt;  &lt;br /&gt;       &lt;span class="rem"&gt;' Remote Registry Service started&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"Calling RemoteRegistry"&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Call&lt;/span&gt; KickService(&lt;span class="str"&gt;"RemoteRegistry"&lt;/span&gt;)       &lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; checkAssignment()&lt;br /&gt;       &lt;span class="rem"&gt;'Ensure that the client is assigned to a site if its not assigned to any&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"Checking to make sure SMS Client has site assignment"&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;Set&lt;/span&gt; ISmsClient = CreateObject (&lt;span class="str"&gt;"Microsoft.SMS.Client"&lt;/span&gt;)&lt;br /&gt;       AssignedSite = ISmsClient.GetAssignedSite&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; Len(AssignedSite &amp;amp; &lt;span class="str"&gt;""&lt;/span&gt;)&amp;gt;0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             logfile.writeline &lt;span class="str"&gt;"Client is not assigned, attempting to AutoDiscover and set"&lt;/span&gt;&lt;br /&gt;             ISmsClient.EnableAutoAssignment 1&lt;br /&gt;           DiscoveredSite = ISmsClient.AutoDiscoverSite&lt;br /&gt;           ISmsClient.SetAssignedSite DiscoveredSite,0&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;"Client is now assigned to "&lt;/span&gt; &amp;amp; ISmsClient.GetAssignedSite&lt;br /&gt;       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"Client is now assigned to "&lt;/span&gt; &amp;amp; ISmsClient.GetAssignedSite&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' KickService function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; KickService(servicename)&lt;br /&gt; &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt; logfile.writeline &lt;span class="str"&gt;"Inside KickService"&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; Results, wmi, Service, returncode, Service2, Started&lt;br /&gt;         Results = ServiceState(servicename)&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"servicename = "&lt;/span&gt; &amp;amp; servicename&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"Results = "&lt;/span&gt; &amp;amp; Results&lt;br /&gt;         &lt;span class="kwrd"&gt;set&lt;/span&gt; wmi = getobject(&lt;span class="str"&gt;"winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"&lt;/span&gt;)&lt;br /&gt;        &lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; LCase(Results) = LCase(&lt;span class="str"&gt;"Running"&lt;/span&gt;)&lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;set&lt;/span&gt; Results = wmi.execquery(&lt;span class="str"&gt;"select state from win32_service where name='"&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;"'"&lt;/span&gt;)&lt;br /&gt;           &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; Service &lt;span class="kwrd"&gt;In&lt;/span&gt; Results&lt;br /&gt;               &lt;span class="rem"&gt;' Start service&lt;/span&gt;&lt;br /&gt;                 returncode = Service.StartService&lt;br /&gt;                 logfile.writeline &lt;span class="str"&gt;"returncode = "&lt;/span&gt; &amp;amp; returncode&lt;br /&gt;                 &lt;span class="kwrd"&gt;if&lt;/span&gt; returncode &amp;lt;&amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                         &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                             logfile.writeline &lt;span class="str"&gt;"SMS Client Service Failure "&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;" failed to start on "&lt;/span&gt; &amp;amp; CompName&lt;br /&gt;                           &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;"Start Service Error"&lt;/span&gt;, &lt;span class="str"&gt;"SMS Client Service Failure "&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;" failed to start on "&lt;/span&gt; &amp;amp; CompName)&lt;br /&gt;                           &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;                           logfile.writeline &lt;span class="str"&gt;"Quiting Script"&lt;/span&gt;&lt;br /&gt;                           WScript.Quit&lt;br /&gt;                       &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;                           logfile.writeline &lt;span class="str"&gt;"Displaying message to user - Error starting service your Windows Management Service ("&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;") - Call The Help Desk immediately"&lt;/span&gt;&lt;br /&gt;                           msgbox &lt;span class="str"&gt;"Error starting service your Windows Management Service ("&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;") - Call The Help Desk immediately"&lt;/span&gt;&lt;br /&gt;                           &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;                           logfile.writeline &lt;span class="str"&gt;"Quiting Script"&lt;/span&gt;&lt;br /&gt;                           WScript.Quit&lt;br /&gt;                       &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;end&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;Do&lt;/span&gt; &lt;span class="kwrd"&gt;Until&lt;/span&gt; Started = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;'IMPORTANT! &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Adjust sleep as necessary, but do *not* remove it! &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;IMPORTANT!&lt;/span&gt;&lt;br /&gt;                   logfile.writeline &lt;span class="str"&gt;"Sleeping for 2 seconds..."&lt;/span&gt;&lt;br /&gt;                   logfile.writeline &lt;span class="str"&gt;"Use the below text to see how many times the script looped to start the Service"&lt;/span&gt;&lt;br /&gt;                    WScript.Sleep 2000 &lt;span class="rem"&gt;'Sleep for 2 Seconds                    &lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;set&lt;/span&gt; Results = wmi.execquery(&lt;span class="str"&gt;"select state from win32_service where name='"&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;"'"&lt;/span&gt;)&lt;br /&gt;                     &lt;span class="kwrd"&gt;for&lt;/span&gt; &lt;span class="kwrd"&gt;each&lt;/span&gt; Service2 &lt;span class="kwrd"&gt;In&lt;/span&gt; Results&lt;br /&gt;                      &lt;span class="kwrd"&gt;if&lt;/span&gt; lcase(Service2.State) = lcase(&lt;span class="str"&gt;"Running"&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                      logfile.writeline &lt;span class="str"&gt;"Started = "&lt;/span&gt; &amp;amp; Started&lt;br /&gt;                          Started = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;br /&gt;                      &lt;span class="kwrd"&gt;end&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;                     &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;Loop&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; &lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' ServiceState subprocedure&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Function&lt;/span&gt; ServiceState(servicename)&lt;br /&gt;     &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Inside ServiceState"&lt;/span&gt;&lt;br /&gt;     logfile.WriteLine &lt;span class="str"&gt;"Checking "&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;" service"&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; wmi, Results, Service, StateResults, StartMode&lt;br /&gt;     &lt;span class="kwrd"&gt;set&lt;/span&gt; wmi = getobject(&lt;span class="str"&gt;"winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"&lt;/span&gt;)&lt;br /&gt;   &lt;span class="kwrd"&gt;set&lt;/span&gt; Results = wmi.execquery(&lt;span class="str"&gt;"select state from win32_service where name='"&lt;/span&gt; &amp;amp; servicename &amp;amp; &lt;span class="str"&gt;"'"&lt;/span&gt;)&lt;br /&gt;   &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; Service &lt;span class="kwrd"&gt;In&lt;/span&gt; Results&lt;br /&gt;       StateResults = Service.State&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"StateResults = "&lt;/span&gt; &amp;amp; StateResults&lt;br /&gt;   &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     ServiceState = StateResults&lt;br /&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' AdvCliInst subprocedure&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;Sub&lt;/span&gt; AdvCliInst(ComSpec)&lt;br /&gt;     &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Inside AdvCliInst"&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; smsinstall, WshShell, InstallArgs&lt;br /&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; WshShell = WScript.CreateObject(&lt;span class="str"&gt;"WScript.Shell"&lt;/span&gt;)&lt;br /&gt;     ComSpec = WshShell.ExpandEnvironmentStrings(&lt;span class="str"&gt;"%COMSPEC%"&lt;/span&gt;)&lt;br /&gt;     &lt;span class="kwrd"&gt;If&lt;/span&gt; ComSpec = &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;"SMS Client Installation Failure"&lt;/span&gt;, &lt;span class="str"&gt;"The SMS Client failed to Install On "&lt;/span&gt; &amp;amp; CompName&lt;br /&gt;           &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;"SMS Client Installation Failure"&lt;/span&gt;, &lt;span class="str"&gt;"The SMS Client failed to Install On "&lt;/span&gt; &amp;amp; CompName)&lt;br /&gt;           &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;"Exiting Script Processing"&lt;/span&gt;&lt;br /&gt;           WScript.Quit&lt;br /&gt;       &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;"Displaying Message to user - Windows Management Service Installation Failed.  Please contact The Help Desk"&lt;/span&gt;&lt;br /&gt;           MsgBox &lt;span class="str"&gt;"Windows Management Service Installation Failed.  Please contact The Help Desk"&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;Call&lt;/span&gt; Cleanup&lt;br /&gt;           logfile.writeline &lt;span class="str"&gt;"Exiting Script Processing"&lt;/span&gt;&lt;br /&gt;           WScript.Quit&lt;br /&gt;         &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;         &lt;br /&gt;     &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;     InstallArgs = &lt;span class="str"&gt;""&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named.Exists(&lt;span class="str"&gt;"params"&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;If&lt;/span&gt; Wscript.Arguments.Named(&lt;span class="str"&gt;"params"&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;""&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;                  InstallArgs = Wscript.Arguments.Named(&lt;span class="str"&gt;"params"&lt;/span&gt;)&lt;br /&gt;                  logfile.writeline = &lt;span class="str"&gt;"InstallArgs = "&lt;/span&gt; &amp;amp; InstallArgs&lt;br /&gt;             &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;       smsinstall = ComSpec &amp;amp; &lt;span class="str"&gt;" /c \\"&lt;/span&gt; &amp;amp; Wscript.Arguments.Named(&lt;span class="str"&gt;"smsserver"&lt;/span&gt;) &amp;amp; &lt;span class="str"&gt;"\SMSClient\ccmsetup.exe SMSSLP=smststserver Disablesiteopt=true FSP=smststserver SMSSITECODE=tst"&lt;/span&gt; &amp;amp; InstallArgs&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"Calling SCCM Client installation with below command line:"&lt;/span&gt;&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"smsinstall = "&lt;/span&gt; &amp;amp; smsinstall&lt;br /&gt;     &lt;span class="rem"&gt;' Run SMS Client Installation&lt;/span&gt;&lt;br /&gt;       WshShell.Run smsinstall,0,&lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' GetDomainRole function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetDomainRole&lt;br /&gt;     &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Inside GetDomainRole"&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; domainroles, wmi, domainrole&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; wmi = GetObject(&lt;span class="str"&gt;"winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"&lt;/span&gt;)&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; domainroles = wmi.ExecQuery(&lt;span class="str"&gt;"SELECT DomainRole FROM Win32_ComputerSystem"&lt;/span&gt;)&lt;br /&gt;     &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; domainrole &lt;span class="kwrd"&gt;in&lt;/span&gt; domainroles&lt;br /&gt;       GetDomainRole = domainrole.DomainRole&lt;br /&gt;       logfile.writeline &lt;span class="str"&gt;"GetDomainRole = "&lt;/span&gt; &amp;amp; GetDomainRole&lt;br /&gt;     &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; domainroles = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; wmi = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' EmailMessage subprocedure&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;Function&lt;/span&gt; EmailMessage(Subject, Body)&lt;br /&gt;     &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Inside EmailMessage"&lt;/span&gt;&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Email Subject: "&lt;/span&gt; &amp;amp; Subject&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Email Body: "&lt;/span&gt; &amp;amp; Body&lt;br /&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; objEmail, objemailfrom&lt;br /&gt;         &lt;span class="rem"&gt;' email using a generic user account as system is being booted up and user may not have logged on yet&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; objEmail = CreateObject(&lt;span class="str"&gt;"CDO.Message"&lt;/span&gt;)&lt;br /&gt;     objemailfrom = WScript.Arguments.Named(&lt;span class="str"&gt;"smsserver"&lt;/span&gt;) &amp;amp; &lt;span class="str"&gt;"@company.com"&lt;/span&gt;&lt;br /&gt;     objEmail.From = objemailfrom&lt;br /&gt;     objEmail.&lt;span class="kwrd"&gt;To&lt;/span&gt; = WScript.Arguments.Named(&lt;span class="str"&gt;"email"&lt;/span&gt;)&lt;br /&gt;&lt;span class="rem"&gt;'      objEmail.To = "receipants@company.com"&lt;/span&gt;&lt;br /&gt;     objEmail.Subject = Subject&lt;br /&gt;     objEmail.Textbody = Body&lt;br /&gt;     objEmail.Configuration.Fields.Item _&lt;br /&gt;     (&lt;span class="str"&gt;"http://schemas.microsoft.com/cdo/configuration/sendusing"&lt;/span&gt;) = 2&lt;br /&gt;     objEmail.Configuration.Fields.Item _&lt;br /&gt;     (&lt;span class="str"&gt;"http://schemas.microsoft.com/cdo/configuration/smtpserver"&lt;/span&gt;) = _&lt;br /&gt;     &lt;span class="str"&gt;"smtp.company.com"&lt;/span&gt;&lt;br /&gt;     objEmail.Configuration.Fields.Item _&lt;br /&gt;     (&lt;span class="str"&gt;"http://schemas.microsoft.com/cdo/configuration/smtpserverport"&lt;/span&gt;) = 25&lt;br /&gt;     objEmail.Configuration.Fields.Update&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Sending Email"&lt;/span&gt;&lt;br /&gt;     objEmail.Send&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; objEmail = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' ShowFileAccessInfo function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;Function&lt;/span&gt; ShowFileAccessInfo(filespec, Compname)&lt;br /&gt;     &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Inside ShowFileAccessInfo"&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; fso, f, filespec_date, FSpace&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; fso = CreateObject(&lt;span class="str"&gt;"Scripting.FileSystemObject"&lt;/span&gt;)&lt;br /&gt;     &lt;span class="kwrd"&gt;If&lt;/span&gt; fso.FileExists(filespec) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;Set&lt;/span&gt; f = fso.GetFile(filespec)&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"f = "&lt;/span&gt; &amp;amp; f&lt;br /&gt;         filespec_date = f.DateLastModified&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"filespec_date = "&lt;/span&gt; &amp;amp; filespec_date&lt;br /&gt;         FSpace = Instr(filespec_date,&lt;span class="str"&gt;" "&lt;/span&gt;) - 1&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"FSpace = "&lt;/span&gt; &amp;amp; FSpace&lt;br /&gt;         ShowFileAccessInfo = Left(filespec_date,FSpace)&lt;br /&gt;         logfile.writeline &lt;span class="str"&gt;"ShowFileAccessInfo = "&lt;/span&gt; &amp;amp; ShowFileAccessInfo&lt;br /&gt;     &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;If&lt;/span&gt; Email = &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;br /&gt;             logfile.writeline &lt;span class="str"&gt;"File Missing - "&lt;/span&gt; &amp;amp; filespec &amp;amp; &lt;span class="str"&gt;" is missing On "&lt;/span&gt; &amp;amp; Compname&lt;br /&gt;             &lt;span class="kwrd"&gt;Call&lt;/span&gt; EmailMessage(&lt;span class="str"&gt;"File Missing"&lt;/span&gt;, filespec &amp;amp; &lt;span class="str"&gt;" is missing On "&lt;/span&gt; &amp;amp; Compname)&lt;br /&gt;             logfile.writeline &lt;span class="str"&gt;"Exiting Script Processing"&lt;/span&gt;&lt;br /&gt;             WScript.Quit&lt;br /&gt;         &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' Destroy any objects&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;' =====================================================  &lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Cleanup&lt;br /&gt;     &lt;span class="kwrd"&gt;On&lt;/span&gt; &lt;span class="kwrd"&gt;Error&lt;/span&gt; &lt;span class="kwrd"&gt;Resume&lt;/span&gt; &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;br /&gt;     logfile.writeline &lt;span class="str"&gt;"Inside Cleanup"&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; WshShell = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; ComSpec = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; windir = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; strCompName = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;Set&lt;/span&gt; SmsClient = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;br /&gt; ' =====================================================&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-2465934735761615146?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/2465934735761615146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=2465934735761615146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2465934735761615146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2465934735761615146'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/10/testing.html' title='Client Health Check Script'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-7614085493444632972</id><published>2008-10-16T16:56:00.000-07:00</published><updated>2008-10-16T17:15:18.859-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>open file - security warning</title><content type='html'>In our SCCM environment we frequently use the option to run from server instead of download and run.  One of the issues we've seen from time to time is if our script calls another program that was downloaded from the internet it may have had the untrusted source bit set during the download.  In our scripts we get around the Open File - Security warning dialog box by temporarily turning off zone checking.  At the end of the script we turn zone checking back on.  No need to add servers to trusted sites via group policy!  More info on this problem here:&lt;div&gt;&lt;a href="http://blogs.msdn.com/gblock/archive/2006/12/19/tips-steams-zones-vista-and-blocked-files-in-ie.aspx?CommentPosted=true#commentmessage"&gt;http://blogs.msdn.com/gblock/archive/2006/12/19/tips-steams-zones-vista-and-blocked-files-in-ie.aspx?CommentPosted=true#commentmessage&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;set objShell = CreateObject("Wscript.shell")&lt;/div&gt;&lt;div&gt;Set objEnv = objShell.Environment("PROCESS")&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;' ********************************************************************************&lt;/div&gt;&lt;div&gt;'Main Routine&lt;/div&gt;&lt;div&gt;'*********************************************************************************&lt;/div&gt;&lt;div&gt;objEnv("SEE_MASK_NOZONECHECKS") = 1&lt;/div&gt;&lt;div&gt;objShell.Run("taskkill.exe /F /IM foo.exe"),,False&lt;/div&gt;&lt;div&gt;Install_Application()&lt;/div&gt;&lt;div&gt;objEnv.Remove("SEE_MASK_NOZONECHECKS")&lt;/div&gt;&lt;div&gt;WSCRIPT.QUIT&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;' ********************************************************************************&lt;/div&gt;&lt;div&gt;'Install Application&lt;/div&gt;&lt;div&gt;'*********************************************************************************&lt;/div&gt;&lt;div&gt;Function Install_Application()&lt;/div&gt;&lt;div&gt;'setup program&lt;/div&gt;&lt;div&gt;objShell.run("fooInstall.exe /silent"),1,true&lt;/div&gt;&lt;div&gt;Wscript.Sleep(5000)&lt;/div&gt;&lt;div&gt;End Function&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-7614085493444632972?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/7614085493444632972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=7614085493444632972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7614085493444632972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7614085493444632972'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/10/open-file-security-warning.html' title='open file - security warning'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8817780990416591423</id><published>2008-10-09T07:49:00.000-07:00</published><updated>2008-10-09T22:02:52.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='right click tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>configmgr right click tools</title><content type='html'>If your familiar with the sms 2003 right click tools, then your probably already know that there are new console extenstions available for SCCM.  My favorite is Rick Houchin's SCCM Right Click tools: &lt;a href="http://myitforum.com/cs2/blogs/rhouchins/archive/2008/04/09/sccm-right-click-tools.aspx"&gt;http://myitforum.com/cs2/blogs/rhouchins/archive/2008/04/09/sccm-right-click-tools.aspx&lt;/a&gt;  Download version 1.7 directly from: &lt;a href="http://myitforum.com/cs2/blogs/rhouchins/0613ConfigMgrTools.zip"&gt;http://myitforum.com/cs2/blogs/rhouchins/0613ConfigMgrTools.zip&lt;/a&gt; For those of you who haven't tried them, I highly recommend that you do since they make life so much easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8817780990416591423?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8817780990416591423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8817780990416591423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8817780990416591423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8817780990416591423'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/10/configmgr-right-click-tools.html' title='configmgr right click tools'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-5325384817154131736</id><published>2008-10-08T08:00:00.000-07:00</published><updated>2008-10-08T08:00:00.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Refresh Package'/><category scheme='http://www.blogger.com/atom/ns#' term='Distribution Point'/><category scheme='http://www.blogger.com/atom/ns#' term='Update Package'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Update Package versus Refresh Package</title><content type='html'>You may have noticed that if you right click on the distribution point node of a Package you will get an option to Update Distribution points.  If you open the node and right click on an individual DP you will get an option to refresh the package on that distribution point.  There is no option to refresh a package on all DP's and there is no option to Update a package on just one DP.  What's going on here?  Well, each function is slightly different.  When you create a package and assign a source location to it, that package is actually stored on the site server in the SMSPKG folder as a compressed file in the form of PackageID.pck extension.   This folder is shared out from the site server as \\server\SMS_CPSx$, where x represents the drive letter it is located on.  When choosing the option to Update a package a delta file of the changes is created from the specified source location and the version number is incremented for both the source and client policy.  The delta file is what gets sent out to the DP's.  Choosing the option to refresh a package will actually repair a package at a DP by recopying the entire compressed package from the local site server to the DP.  There is no update of any changes that may have occured at the package source.&lt;br /&gt;&lt;br /&gt;More info: &lt;a href="http://technet.microsoft.com/en-us/library/bb892806.aspx"&gt;http://technet.microsoft.com/en-us/library/bb892806.aspx&lt;/a&gt;&lt;br /&gt;and here: &lt;a href="http://www.serverwatch.com/tutorials/article.php/1474011"&gt;http://www.serverwatch.com/tutorials/article.php/1474011&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-5325384817154131736?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/5325384817154131736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=5325384817154131736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/5325384817154131736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/5325384817154131736'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/10/update-package-versus-refresh-package.html' title='Update Package versus Refresh Package'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-5045958633610340817</id><published>2008-10-06T08:00:00.000-07:00</published><updated>2008-10-06T17:55:03.276-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='configmgr'/><title type='text'>Script to Force Client Inventory on 64-Bit OS</title><content type='html'>In my previous post I posted the script to force HW and SW inventory on a client.  However if you run the script on 64-bit vista or '08, you will get a 800a01ad error code (I'm guessing this will also happen of 64-bit XP, but didnt' test it).  The specific error is: ActiveX component can't create object: 'CPAPPLET.CPAppletMgr' .  The issue is that configmgr's applet's are 32-bit only.  On a 64-bit system, Open control panel and you will not see the configmgr cpl, unless you open the "View 32-bit Control Panel" applet.  By default, 64-bit versions of windows call the 64-bit version of the scripting host (wscript or cscript), which will only talk to the 64-bit part of the control panel.  So the solution is to call the 32-bit scripting host that will talk to the 32-bit control panel items.  A simple batch file to run from either verison of the OS to launch your vbs using the correct scripting host will do the trick:&lt;br /&gt;&lt;br /&gt;if exist %systemroot%\SysWOW64\cscript.exe goto run64&lt;br /&gt;\\server\share\swinventory.vbs&lt;br /&gt;exit&lt;br /&gt;:run64&lt;br /&gt;%systemroot%\SysWOW64\cscript.exe \\server\share\swinventory.vbs&lt;br /&gt;exit&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-5045958633610340817?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/5045958633610340817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=5045958633610340817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/5045958633610340817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/5045958633610340817'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/10/script-to-force-client-inventory-on-64.html' title='Script to Force Client Inventory on 64-Bit OS'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-3847441406290629466</id><published>2008-10-03T06:27:00.000-07:00</published><updated>2008-10-03T06:42:33.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Inventory'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware Inventory'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>Script to Force Hardware or Software Inventory</title><content type='html'>In my previous post I stated that we were allowing users to opt in to a collection on their own by putting a dummy exe on their computers.  The collection is setup to update its membership nightly.  However, clients need to run software inventory to report the new exe back to the Management Point.  Here's a VB script that clients can run to kick this process off.  Credit to Chris Stauffer at myitforum for the original code ( &lt;a href="http://myitforum.com/cs2/blogs/cstauffer/archive/2007/04/04/script-to-perform-a-full-sms-inventory.aspx"&gt;http://myitforum.com/cs2/blogs/cstauffer/archive/2007/04/04/script-to-perform-a-full-sms-inventory.aspx&lt;/a&gt;).  Also, I added in the Hardware Inventory version in case your adding registry keys, wmi classes, other HWinv type items.  If you want to verify that it's running check the inventoryagent.log file on the client.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;On Error Resume Next&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ForceSoftwareInventory()&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ForceHardwareInventory()&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;'*********************************************************************************************************&lt;/div&gt;&lt;div&gt;'Force Software Inventory on the Client&lt;/div&gt;&lt;div&gt;'*********************************************************************************************************&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Function ForceSoftwareInventory()&lt;/div&gt;&lt;div&gt;Set sho = CreateObject("WScript.Shell")&lt;/div&gt;&lt;div&gt;strSystemRoot = sho.expandenvironmentstrings("%SystemRoot%")&lt;/div&gt;&lt;div&gt;strCurrentDir = Left(Wscript.ScriptFullName, (InstrRev(Wscript.ScriptFullName, "\") -1))&lt;/div&gt;&lt;div&gt;'Run a SMS Software Inventory&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Set cpApplet = CreateObject("CPAPPLET.CPAppletMgr")&lt;/div&gt;&lt;div&gt;Set actions = cpApplet.GetClientActions&lt;/div&gt;&lt;div&gt;For Each action In actions&lt;/div&gt;&lt;div&gt;    If Instr(action.Name,"Software Inventory Collection Cycle") &gt; 0 Then&lt;/div&gt;&lt;div&gt;        action.PerformAction  &lt;/div&gt;&lt;div&gt;'        WScript.Echo action.name&lt;/div&gt;&lt;div&gt;End If&lt;/div&gt;&lt;div&gt;Next&lt;/div&gt;&lt;div&gt;End Function&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;'*********************************************************************************************************&lt;/div&gt;&lt;div&gt;'Force Hardware Inventory on the Client&lt;/div&gt;&lt;div&gt;'*********************************************************************************************************&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Function ForceHardwareInventory()&lt;/div&gt;&lt;div&gt;Set sho = CreateObject("WScript.Shell")&lt;/div&gt;&lt;div&gt;strSystemRoot = sho.expandenvironmentstrings("%SystemRoot%")&lt;/div&gt;&lt;div&gt;strCurrentDir = Left(Wscript.ScriptFullName, (InstrRev(Wscript.ScriptFullName, "\") -1))&lt;/div&gt;&lt;div&gt;'Run a SMS Hardware Inventory&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Set cpApplet = CreateObject("CPAPPLET.CPAppletMgr")&lt;/div&gt;&lt;div&gt;Set actions = cpApplet.GetClientActions&lt;/div&gt;&lt;div&gt;For Each action In actions&lt;/div&gt;&lt;div&gt;    If Instr(action.Name,"Hardware Inventory Collection Cycle") &gt; 0 Then&lt;/div&gt;&lt;div&gt;        action.PerformAction  &lt;/div&gt;&lt;div&gt;'        WScript.Echo action.name&lt;/div&gt;&lt;div&gt;End If&lt;/div&gt;&lt;div&gt;Next&lt;/div&gt;&lt;div&gt;End Function&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-3847441406290629466?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/3847441406290629466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=3847441406290629466' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3847441406290629466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3847441406290629466'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/10/script-to-force-hardware-or-software.html' title='Script to Force Hardware or Software Inventory'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-6373747988112203582</id><published>2008-09-30T06:54:00.000-07:00</published><updated>2008-09-30T19:07:48.368-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Collections'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>query collection based on file existing on machine</title><content type='html'>At my company we wanted to create a system where developers could opt in to receive a copy of the nightly build of the software they were working on.  In the first part of this project we create a collection based on the software inventory of a particular file.  By default SCCM looks for any *.exe's on client systems.  Rather than add another file type, we created a dummy exe as the criteria for our collection:&lt;div&gt;&lt;div&gt;Criterion Type: Simple Value&lt;/div&gt;&lt;div&gt;Where: Software Files – File Name&lt;/div&gt;&lt;div&gt;Operator: is equal to&lt;/div&gt;&lt;div&gt;Value: Filename.exe&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Equilivent in wql:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SoftwareFile on SMS_G_System_SoftwareFile.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SoftwareFile.FileName = "Filename.exe"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-6373747988112203582?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/6373747988112203582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=6373747988112203582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6373747988112203582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6373747988112203582'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/query-collection-based-on-file-existing.html' title='query collection based on file existing on machine'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8472783071807484026</id><published>2008-09-28T12:10:00.001-07:00</published><updated>2008-09-28T12:35:09.823-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mindmap'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>SCCM MindMap</title><content type='html'>I've been very busy this past week updating or SCCM environment to SP1.  We want to be at SP1 before we start updating clients from SMS 2003.  During the process I've been helping another admin learn some of the in's and out's of SCCM.  To help I put together a quick mindmap that will help people new to SCCM wrap their heads around it.  You can create your own mindmap at &lt;a href="http://www.text2mindmap.com/"&gt;http://www.text2mindmap.com/&lt;/a&gt; .&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="float: left; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/7767393@N02/2896271270/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3118/2896271270_cb1e8603a8_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you like my list and want to add to it:&lt;div&gt;&lt;div&gt;SCCM&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Software Distribution&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Packages&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Source&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Refresh Distribution Point&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Programs&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Advertisments&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Available&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Mandatory&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Expires&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Collections&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Static&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Dynamic&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Software Updates&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Updates lists&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Deployment Templates&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Deployment Management&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Deployment Packages&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OSD&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Tasks&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Drivers&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8472783071807484026?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8472783071807484026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8472783071807484026' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8472783071807484026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8472783071807484026'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/sccm-mindmap.html' title='SCCM MindMap'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3118/2896271270_cb1e8603a8_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-1829407542976502881</id><published>2008-09-19T07:34:00.000-07:00</published><updated>2008-09-19T07:45:09.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><category scheme='http://www.blogger.com/atom/ns#' term='error 10052'/><title type='text'>Clients Do Not Run Mandatory Advertisements and They Return Status Message 10052</title><content type='html'>Yesterday I created a program for a package and advertised it to some test machines.  The package was pretty small so I decided to use the download and run option instead of my normal run from Distribution Point.  Everything else I did the same way I normally do.  To my surprise the program refused to run on the clients.  Checking the Advertisment Status logs I found the error being returned by the clients:  10052 &lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 11px; "&gt;The program for the advertisement "&lt;var style="-webkit-box-sizing: border-box; "&gt;advertisementID&lt;/var&gt;" ("&lt;var style="-webkit-box-sizing: border-box; "&gt;packageID&lt;/var&gt;" - "&lt;var style="-webkit-box-sizing: border-box; "&gt;program_name&lt;/var&gt;") could not be run because the policy contains an invalid combination of requirements: &lt;var style="-webkit-box-sizing: border-box; "&gt;site_code&lt;/var&gt;. Possible causes: The program is set to run when no user is logged on, but is being advertised to a user. The program is set to require user input, but does not require that a user be logged on in order to run. Solution: Examine the properties of the program to resolve the conflicting requirements.&lt;/span&gt;  I found out that setting the client to download and run, and requires a mapped drive letter will trigger this error message.  No need to map a drive letter if the content is already on the machine!  Anyway here is Microsofts KB on the same issue (written for SMS 2003): &lt;a href="http://support.microsoft.com/kb/829858"&gt;http://support.microsoft.com/kb/829858&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-1829407542976502881?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/1829407542976502881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=1829407542976502881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1829407542976502881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1829407542976502881'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/clients-do-not-run-mandatory.html' title='Clients Do Not Run Mandatory Advertisements and They Return Status Message 10052'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-4569887864350670687</id><published>2008-09-17T18:55:00.000-07:00</published><updated>2008-09-17T18:59:32.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Advertisements'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>Script to Modify SCCM Advertisement</title><content type='html'>Below is a script I wrote to echo out all the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;proprieties&lt;/span&gt; from an SCCM advertisement.  Then I modified the comment property and saved it back.  You can modify any property you want, but the Mandatory Assignments will be tricker since they are in an Array.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; "&gt;' --- Set Variables&lt;br /&gt;siteName = "tst"&lt;br /&gt;serverName = "SMSSITESERVER"&lt;br /&gt;SMS_AdvertisementID = "tst20408"&lt;br /&gt;Dim replacementScheduleArray()&lt;br /&gt;Dim SMS_ScheduleToken&lt;br /&gt;&lt;br /&gt;' --- Create Objects&lt;br /&gt;Set loc = CreateObject("WbemScripting.SWbemLocator")&lt;br /&gt;Set WbemServices = loc.ConnectServer(servername , "root\SMS\site_" &amp;amp; siteName)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;smsAdvertisement()&lt;br /&gt;&lt;br /&gt;' --- Refresh Package&lt;br /&gt;Function smsAdvertisement()&lt;br /&gt;Set colAdvertisements = WbemServices.ExecQuery("Select * From SMS_Advertisement where AdvertisementID='" &amp;amp; SMS_AdvertisementID &amp;amp; "'")&lt;br /&gt;Set objAdvertisement = WbemServices.Get("SMS_Advertisement.AdvertisementID='" &amp;amp; SMS_AdvertisementID &amp;amp; "'")&lt;br /&gt;Set Advertisement_Properties = objAdvertisement.Properties_ 'get property Set&lt;br /&gt;set AssignedScheduleArray = Advertisement_Properties.Item("AssignedSchedule")&lt;br /&gt;&lt;br /&gt;For each Advertisement In colAdvertisements&lt;br /&gt;'Get Info&lt;br /&gt;Wscript.Echo "adname " &amp;amp; Advertisement.AdvertisementName&lt;br /&gt;wscript.echo "ad ID " &amp;amp; Advertisement.AdvertisementID&lt;br /&gt;wscript.echo "ad Flag " &amp;amp; Advertisement.AdvertFlags&lt;br /&gt;wscript.echo "Present Time " &amp;amp; Advertisement.PresentTime&lt;br /&gt;wscript.echo "Present Time enforced? " &amp;amp; Advertisement.PresentTimeEnabled&lt;br /&gt;wscript.echo "TimeFlags Property " &amp;amp; Advertisement.TimeFlags&lt;br /&gt;wscript.echo "Is Assigned Schedule Enabled/active? Must be true for Mandatory True/false " &amp;amp; Advertisement.AssignedScheduleEnabled&lt;br /&gt;wscript.echo "Expiration Time " &amp;amp; Advertisement.ExpirationTime&lt;br /&gt;wscript.echo "Expiration Time Enabled? " &amp;amp; Advertisement.ExpirationTimeEnabled&lt;br /&gt;wscript.echo "Collection ID " &amp;amp; Advertisement.collectionID&lt;br /&gt;wscript.echo "Package ID " &amp;amp; Advertisement.PackageID&lt;br /&gt;wscript.echo "Program Name " &amp;amp; Advertisement.ProgramName&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For i = 0 to UBound(AssignedScheduleArray)&lt;br /&gt;Set SMS_ScheduleToken = AssignedScheduleArray(i)&lt;br /&gt;WScript.Echo AssignedScheduleArray.Name &amp;amp; " " &amp;amp; i &amp;amp; ":" &amp;amp; SMS_ScheduleToken.GetObjectText_()&lt;br /&gt;WScript.Echo "Assignment:" &amp;amp; SMS_ScheduleToken.StartTime&lt;br /&gt;&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;'begin modifying:&lt;br /&gt;&lt;br /&gt;strNewComment = "Updated by vbs"&lt;br /&gt;Advertisement.Comment = strNewComment&lt;br /&gt;&lt;br /&gt;'This next line will modify the Advertisment with settings set in variables above.&lt;br /&gt;Advertisement.Put_&lt;br /&gt;&lt;br /&gt;Next &lt;br /&gt;End Function&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-4569887864350670687?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/4569887864350670687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=4569887864350670687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/4569887864350670687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/4569887864350670687'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/script-to-modify-sccm-advertisement.html' title='Script to Modify SCCM Advertisement'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8325208256296425198</id><published>2008-09-16T07:17:00.000-07:00</published><updated>2008-09-16T07:29:13.333-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Refresh Package'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>Scripting SCCM to refresh a package source directory</title><content type='html'>&lt;div&gt;My company has a need to have a particular package's distribution points update automatically when a file in the package source directory changes. We looked at the package's built in option to automatically update DP's on a schedule. Ultimately, we decided this would not work. We have a very short window to obtain a 4GB updated package source and then distribute that content to clients. If we set the window too small (every 20 minutes), then clients would be mostly locked out from getting content from the DP, since the DP would be constantly updating. If we set it too large, we don't get the content within the targeted time window. Using the SCCM SDK ( &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=064A995F-EF13-4200-81AD-E3AF6218EDCC&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=064A995F-EF13-4200-81AD-E3AF6218EDCC&amp;amp;displaylang=en&lt;/a&gt; ) and information from a post by aparrott on myitforum: &lt;a href="http://www.myitforum.com/forums/m_180582/mpage_1/key_/tm.htm#180582"&gt;http://www.myitforum.com/forums/m_180582/mpage_1/key_/tm.htm#180582&lt;/a&gt; we were able to create our own script that will detect the change and then update the DP. I have a scheduled task that runs every 20 minutes. If the last modified stamp on the text file is different, then the DP's will update. This happens once a day, but I get new content onto the DP's within 25 minutes. Now I just need to delete the old mandatory assignment and create a new one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Careful of the wordwrap!  I suggest you copy and paste into notepad.&lt;/div&gt;&lt;div&gt;'==========================================================================&lt;/div&gt;&lt;div&gt;'&lt;/div&gt;&lt;div&gt;' VBScript Source File -- Created with PrimalScript.&lt;/div&gt;&lt;div&gt;'&lt;/div&gt;&lt;div&gt;' NAME: SCCM_Refresh_DP_Nightly_Build.vbs&lt;/div&gt;&lt;div&gt;'&lt;/div&gt;&lt;div&gt;' Created by: Bill Phillips, ESRI&lt;/div&gt;&lt;div&gt;' Date: 09/15/2008&lt;/div&gt;&lt;div&gt;'&lt;/div&gt;&lt;div&gt;' COMMENT:&lt;/div&gt;&lt;div&gt;' Run this as a scheduled task under the System account.&lt;/div&gt;&lt;div&gt;' Machine's account must have rights to the shares.&lt;/div&gt;&lt;div&gt;' Example code from: http://www.myitforum.com/forums/m_180582/mpage_1/key_/tm.htm#180582&lt;/div&gt;&lt;div&gt;'==========================================================================&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On Error Resume Next&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;' --- Set Variables&lt;/div&gt;&lt;div&gt;siteName = "tst"&lt;/div&gt;&lt;div&gt;serverName = "SMSSERVER"&lt;/div&gt;&lt;div&gt;SMS_PackageID = "tst00158"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;' --- Create Objects&lt;/div&gt;&lt;div&gt;Set loc = CreateObject("WbemScripting.SWbemLocator")&lt;/div&gt;&lt;div&gt;Set WbemServices = loc.ConnectServer(servername , "root\SMS\site_" &amp;amp; siteName)&lt;/div&gt;&lt;div&gt;set FSO=CreateObject("Scripting.FileSystemObject")&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CompareFiles()&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;' --- Compare Files&lt;/div&gt;&lt;div&gt;Function CompareFiles()&lt;/div&gt;&lt;div&gt;Set objSourceBuildNumTextDate = FSO.GetFile ("\\smsserver\source\foo.txt")&lt;/div&gt;&lt;div&gt;Set objDestBuildNumTextDate = FSO.GetFile ("\\dpserver\SMSPKGE$\tst00158\foo.txt")&lt;/div&gt;&lt;div&gt;If not objSourceBuildNumTextDate.DateLastModified = objDestBuildNumTextDate.DateLastModified Then RefreshPKG&lt;/div&gt;&lt;div&gt;End Function&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;' --- Refresh Package&lt;/div&gt;&lt;div&gt;Function RefreshPKG()&lt;/div&gt;&lt;div&gt;Set packages = WbemServices.ExecQuery("Select * From SMS_Package where PackageID = '" &amp;amp; SMS_PackageID &amp;amp; "'")&lt;/div&gt;&lt;div&gt;For Each package In packages&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Package.RefreshPkgSource( )&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;End Function&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8325208256296425198?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8325208256296425198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8325208256296425198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8325208256296425198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8325208256296425198'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/scripting-sccm-to-refresh-package_16.html' title='Scripting SCCM to refresh a package source directory'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-1193194300691195654</id><published>2008-09-11T06:45:00.000-07:00</published><updated>2008-09-11T06:49:54.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>Searching Config Manager Docs on Technet</title><content type='html'>As many of you know, searching Config Manager documentation on Technet is a PITA!  Fortunetly Jeff Gilbert has figured out how to narrow your Technet search down to just the Config Manager docs.  &lt;a href="http://blogs.technet.com/wemd_ua_-_sms_writing_team/archive/2007/11/07/how-to-more-easily-search-the-configuration-manager-documentation-library-online.aspx"&gt;http://blogs.technet.com/wemd_ua_-_sms_writing_team/archive/2007/11/07/how-to-more-easily-search-the-configuration-manager-documentation-library-online.aspx&lt;/a&gt;&lt;br /&gt;This should make life significantly better.  Can't believe I haven't seen this before now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-1193194300691195654?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/1193194300691195654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=1193194300691195654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1193194300691195654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1193194300691195654'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/searching-config-manager-docs-on.html' title='Searching Config Manager Docs on Technet'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-7263496696527675055</id><published>2008-09-10T07:10:00.000-07:00</published><updated>2008-09-10T07:16:00.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Deployment of Vista msu with License Agreement</title><content type='html'>Just came accross an issue where Vista will ignore the /quiet option for Wusa.exe if the MSU file (a Vista patch) has a built-in license agreement.  To fix this issue, you must install a hotfix:&lt;div&gt;&lt;a href="http://support.microsoft.com/kb/929761"&gt;http://support.microsoft.com/kb/929761&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-7263496696527675055?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/7263496696527675055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=7263496696527675055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7263496696527675055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7263496696527675055'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/deployment-of-vista-msu-with-license.html' title='Deployment of Vista msu with License Agreement'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8529614083615713583</id><published>2008-09-09T07:02:00.000-07:00</published><updated>2008-09-09T07:41:20.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSE'/><category scheme='http://www.blogger.com/atom/ns#' term='GPP'/><category scheme='http://www.blogger.com/atom/ns#' term='config Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>Deployment of Group Policy Preferences Client Side Extensions</title><content type='html'>Yesterday my Group Policy Admin asked about deploying the Client Side Extensions (CSE's) for Group Policy Preferences (GPP) to all the machines in our network.  So I started looking into it and must say I'm very dissappointed with Microsofts support for the deployment of CSE's.  Sure CSE's are available in WSUS and therefore available in SCCM.  However, they haven't released CSE's for XP SP3 yet.  Additionally, the CSE's have a prerequisite of XMLLite.  Unbelievably, XMLLite is not available via WSUS.  The work around is to deploy IE7 which includes XMLLite.  All of this is a little confusing so I made a chart:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://1.bp.blogspot.com/_pyuwcAiNyRk/SMaJ3hEeWxI/AAAAAAAABKA/eXcDFBnlk4c/s400/CSE_Table.jpg" style="cursor:pointer; cursor:hand;" border="0" alt="" id="BLOGGER_PHOTO_ID_5244030402982468370" /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically I'll create 2 seperate collections for XMLLite to deploy it to the machines that require it.  Then I'll use Software Updates to deploy the CSE's.  XP SP3 will just have to wait until Microsoft gets it done.  Hopefully they're working on CSE deployment with XMLlite bundled in.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8529614083615713583?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8529614083615713583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8529614083615713583' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8529614083615713583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8529614083615713583'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/deployment-of-group-policy-preferences.html' title='Deployment of Group Policy Preferences Client Side Extensions'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pyuwcAiNyRk/SMaJ3hEeWxI/AAAAAAAABKA/eXcDFBnlk4c/s72-c/CSE_Table.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-6471629257661650310</id><published>2008-09-05T18:30:00.000-07:00</published><updated>2008-09-06T09:38:48.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='config Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Updates'/><title type='text'>Config Manager Software Updates</title><content type='html'>Why is config Manager's software update process so confusing?  Today I finally figured it out.  It's because an advertisement can get content from multiple packages!  Think about it.  In a traditional software distribution you have 3 objects to worry about.&lt;div&gt;1. Collection - Target computers&lt;/div&gt;&lt;div&gt;2. Package- contains the files and the commands (programs) that you want to distribute to clients and execute.&lt;/div&gt;&lt;div&gt;3. Advertisement- Matches the Package to a collection to execute at a specific time.&lt;/div&gt;&lt;div&gt;Now in a Software Update you have 4 objects:&lt;/div&gt;&lt;div&gt;1. Update list- A type of template its just a simple list of updates worthy of attention.  This is the object that doesn't exist in normal software distribution.  It's designed to make life easier since you can group together updates in a way that fits your business needs.&lt;/div&gt;&lt;div&gt;2. Deployment Templates- A template of settings that may or may not apply to a particular collection.&lt;/div&gt;&lt;div&gt;3. Deployment Package- Very similar to a regular package this item contains the updates but doesn't have any command line options since the sccm client will kick off the wua to do the install.  It is basically just a storage location.&lt;/div&gt;&lt;div&gt;4. Deployments- located under Deployment Management- this is actually just a very special advertisement.  It contains it's own list of updates that are not what necessarily what is in an update list or deployment package.  The reason for my confusion.  Basically it is an independent object that can grab updates from multiple packages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The basic thing to remember is that adding content to a Deployment Package, does not add that content to the actual Deployment (advertisement).  After updating an existing package the updates must be either added to an existing deployment by dragging an update list onto the deployment, or creating a new deployment.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-6471629257661650310?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/6471629257661650310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=6471629257661650310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6471629257661650310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6471629257661650310'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/config-manager-software-updates.html' title='Config Manager Software Updates'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-4695841605339316111</id><published>2008-09-05T05:52:00.000-07:00</published><updated>2008-09-05T06:23:09.343-07:00</updated><title type='text'>Best thing about Chrome</title><content type='html'>Okay, I'm still in love with chrome.  zdnet has a write up about the top 5 things in chrome.  My favorite feature (&lt;a href="about:stats"&gt;about:stats&lt;/a&gt;) didn't make the list but check the rest out:&lt;div&gt;&lt;a href="http://blogs.zdnet.com/BTL/?p=9878"&gt;http://blogs.zdnet.com/BTL/?p=9878&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-4695841605339316111?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/4695841605339316111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=4695841605339316111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/4695841605339316111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/4695841605339316111'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/best-thing-about-chrome.html' title='Best thing about Chrome'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8016618480036720964</id><published>2008-09-04T07:06:00.000-07:00</published><updated>2008-09-04T07:12:59.131-07:00</updated><title type='text'>is sccm client backwards compatible with sms 2003</title><content type='html'>For those of you wondering, the sccm client is not backwards compatible with sms 2003.  However, the sms 2003 client is backwards compatible with a SCCM environment.  Basic rule of thumb regarding SMS/SCCM is that the highest version must be at the top of the hierarchy.  So if your upgrading, you must either upgrade your central site first, or build a new SCCM site and point your sms central site to the SCCM site as its parent.  Then you work your way down the hierarchy upgrading Parent servers, then child servers, and secondary servers.  Never upgrade a server unless the server above it is already upgraded.  Once you've upgraded your entire environment, figure out how clients are going to determine their management server.  After you've put this in place the last thing to upgrade is the client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8016618480036720964?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8016618480036720964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8016618480036720964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8016618480036720964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8016618480036720964'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/is-sccm-client-backwards-compatible.html' title='is sccm client backwards compatible with sms 2003'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-7522545878340146375</id><published>2008-09-03T07:01:00.000-07:00</published><updated>2008-09-03T07:12:00.016-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webkit'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Google Chrome goals</title><content type='html'>A lot of people are wondering why in the world would Google want to release a webbrowser?  We already have 4 biggies: IE, Firefox, Opera, and Safari.  A 5th one just further splinters the market and makes life harder on web developers right?  Actually, what Google is trying to do here is increase visibility of the webkit engine that both Chrome and Safari is based upon.  This also happens to be the engine Google has stuck into it's mobile OS Android.  If Google ever wants to see Android succeed, it has to make sure that it displays the web properly.  The only real way to do this, is to get web developers to code and test against it's webkit engine.  By releasing another browser based on webkit, Google may actually increase the overall web presence of webkit and therefore increase usability for it's Android based devices.  I say this is another smart move by Google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-7522545878340146375?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/7522545878340146375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=7522545878340146375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7522545878340146375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7522545878340146375'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/google-chrome-goals.html' title='Google Chrome goals'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-3451787492265768640</id><published>2008-09-02T19:55:00.000-07:00</published><updated>2008-09-02T20:01:32.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Chrome</title><content type='html'>Today Google announced their new Chrome webbrowser.  &lt;a href="http://www.google.com/chrome"&gt;http://www.google.com/chrome &lt;/a&gt;Based on webkit the same engine that powers safari, iphone, and Google's own Android, chrome is a welcome breath of fresh air.  I've been runing Chrome all day so far and found it very usuable.  I'm even blogging this post from within Chrome.  My biggest complaint?  Google should have made an effort to support plugins.  It'd be even better if they could support existing Firefox Plugins.  I simply can't live without Ad-block plus, and after today I'm sure I'll be back to Firefox due to this one shortcoming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-3451787492265768640?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/3451787492265768640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=3451787492265768640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3451787492265768640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3451787492265768640'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/google-chrome.html' title='Google Chrome'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8917780112083786308</id><published>2008-09-01T18:30:00.000-07:00</published><updated>2008-09-02T19:55:33.344-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reinstall'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM 2007'/><title type='text'>Time to start over</title><content type='html'>This past week I found out that one of our management servers had sccm installed on the c:\ drive.  You'd think there would be a setting to change the storage location so that the program could still run from c:\.  Apparently there is no such option.  Only option is a site uninstall and reinstall.  Of course if you uninstall, you can't reuse the same site code.  Doing so would have dire consequenses including corrupting the site database.  Digging around I found a nice article by Anthony Clendenen on removing a secondary site in SMS 2003.  The steps outlined by Anthony allow reusing the existing site code.  I'd previously used this article to remove and reinstall a Primary 2003 site.  After looking at some of the registry keys and file folders on my SCCM site install, I decided to try the same steps on my SCCM primary site.  Guess what?  It works!  Here's the article:&lt;br /&gt;http://www.myitforum.com/articles/8/view.asp?id=9472&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8917780112083786308?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8917780112083786308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8917780112083786308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8917780112083786308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8917780112083786308'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2008/09/time-to-start-over.html' title='Time to start over'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/13015599227053192324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-7745170071007340658</id><published>2007-04-01T17:06:00.000-07:00</published><updated>2007-04-01T17:09:32.464-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMS v4'/><category scheme='http://www.blogger.com/atom/ns#' term='MMS 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='System Center Configuration Manager 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Management Summit 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM 2007'/><title type='text'>MMS 2007</title><content type='html'>Okay I haven’t posted in a while.&lt;span style=""&gt;  &lt;/span&gt;I’m sorry.&lt;span style=""&gt;  &lt;/span&gt;I had a couple of big events come up that took precedence.&lt;span style=""&gt;  &lt;/span&gt;First I had to setup and administer the computers systems for a small conference (70+ machines).&lt;span style=""&gt;  &lt;/span&gt;I decided against using SMS for this conference, so I took myself out of the SMS loop.&lt;span style=""&gt;  &lt;/span&gt;The 2&lt;sup&gt;nd&lt;/sup&gt; event was the Microsoft Management Summit (MMS 2007).&lt;span style=""&gt;  &lt;/span&gt;This event is all about SMS and the upcoming Systems Center Family.&lt;span style=""&gt;  &lt;/span&gt;The Systems Center family includes Operations Manager, Configuration Manager, Data Protection Manager, Essentials, Virtual Machine Manager, and Capacity Planner.&lt;span style=""&gt;  &lt;/span&gt;System Center Configuration Manager is the important one here.&lt;span style=""&gt;  &lt;/span&gt;It’s actually the next version of SMS.&lt;span style=""&gt;  &lt;/span&gt;SMS v4 will officially be called Systems Center Configuration Manager (SCCM 2007).  &lt;p class="MsoNormal"&gt;At MMS 2007 I learned all about the cool features that SCCM 2007 will be providing.&lt;span style=""&gt;  &lt;/span&gt;There are tons!&lt;span style=""&gt;  &lt;/span&gt;If you haven’t yet, get Beta 2 of SCCM 2007.&lt;span style=""&gt;  &lt;/span&gt;I will be installing it this week and giving a review of my experience.&lt;span style=""&gt;  &lt;/span&gt;I can tell you that at the SMS 2003 to SCCM 2007 upgrade lab, the process was very easy.&lt;span style=""&gt;   &lt;/span&gt;MMS 2007 has also convinced me to install SMS SP3 once it’s available.&lt;span style=""&gt;  &lt;/span&gt;My original plans were to skip SP3 and wait for SCCM 2007.&lt;span style=""&gt;  &lt;/span&gt;However the additional reports and collections regarding Vista has forced me to reconsider this decision.&lt;span style=""&gt;  &lt;/span&gt;SP3 is now a must have for me.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-7745170071007340658?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/7745170071007340658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=7745170071007340658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7745170071007340658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7745170071007340658'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/04/mms-2007.html' title='MMS 2007'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-4367876246757624101</id><published>2007-02-08T18:29:00.000-08:00</published><updated>2007-01-30T20:06:37.321-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1e'/><category scheme='http://www.blogger.com/atom/ns#' term='BITS'/><category scheme='http://www.blogger.com/atom/ns#' term='Background Intelligent Transfer Service'/><category scheme='http://www.blogger.com/atom/ns#' term='client health'/><title type='text'>BITS Bites me</title><content type='html'>&lt;p class="MsoNormal"&gt;So we are trying to push out the client to a couple of our Regional Offices (RO’s).&lt;span style=""&gt;  &lt;/span&gt;Our preferred method (meaning method used by the old admin) is to use the free client health tool by 1E.&lt;span style=""&gt;  &lt;/span&gt;&lt;a href="http://www.1e.com/Downloads/FreeTools/index.aspx"&gt;http://www.1e.com/Downloads/FreeTools/index.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The advantage of this tool is that it is a startup script that checks to see if SMS is working properly.&lt;span style=""&gt;  &lt;/span&gt;If it isn’t working properly (or isn’t installed), then it re-installs it.&lt;span style=""&gt;  &lt;/span&gt;It works better than the built in client push method since you can control who gets the startup script via group policy.&lt;span style=""&gt;  &lt;/span&gt;It also will email the designated admin if it can’t install properly and give you a reason.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Lucky for me, my email box received 20 emails today about out of date BITS (Background Intelligent Transfer Service).&lt;span style=""&gt;  &lt;/span&gt;SMS can’t download and run a package if BITS doesn’t work properly.&lt;span style=""&gt;   &lt;/span&gt;According to Microsoft, the most current version of BITS is 3.0 (&lt;a href="http://www.1e.com/Downloads/FreeTools/index.aspx"&gt;http://www.1e.com/Downloads/FreeTools/index.aspx&lt;/a&gt;)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now if only there was a place to download BITS 3.0 for distribution... &lt;span style=""&gt; &lt;/span&gt;Best I could find was BITS 2.0 here: &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=B93356B1-BA43-480F-983D-EB19368F9047&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=B93356B1-BA43-480F-983D-EB19368F9047&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If anybody knows more info, please let me know. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-4367876246757624101?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/4367876246757624101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=4367876246757624101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/4367876246757624101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/4367876246757624101'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/02/bits-bites-me.html' title='BITS Bites me'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-7460109033861075128</id><published>2007-01-30T20:05:00.000-08:00</published><updated>2007-01-30T20:06:37.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WUA'/><category scheme='http://www.blogger.com/atom/ns#' term='ITMU update'/><title type='text'>ITMU update goes smoothly</title><content type='html'>&lt;p class="MsoNormal"&gt;The last week has been pretty uneventful.&lt;span style=""&gt;  &lt;/span&gt;Yesterday, I installed the ITMU update on my test server.&lt;span style=""&gt;  &lt;/span&gt;It updates the packages, collections, and advertisements as expected.&lt;span style=""&gt;  &lt;/span&gt;It also adds in the 64 bit ones as well which will be nice if we ever let our users run the 64bit OS I suppose.&lt;span style=""&gt;  &lt;/span&gt;The only disappointing part is that nothing in the install is configurable.&lt;span style=""&gt;  &lt;/span&gt;We don’t use the default collections or advertisements, so we’ll have to update these on our own I suppose.&lt;span style=""&gt;  &lt;/span&gt;Not a big deal.&lt;span style=""&gt;  &lt;/span&gt;So I send out the change control and let everyone know that the clients will receive an updated Windows Update Agent (WUA).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Today we went ahead with the ITMU update on the production environment.&lt;span style=""&gt;  &lt;/span&gt;Once again it was uneventful.&lt;span style=""&gt;  &lt;/span&gt;The only minor detail was that we changed advertisement related to the scan package (Microsoft Update Tools) to use a test collection.&lt;span style=""&gt;  &lt;/span&gt;One can never be too careful!&lt;span style=""&gt;  &lt;/span&gt;Note, this package has the dependency to run the WUA package first.&lt;span style=""&gt;  &lt;/span&gt;The WUA package should only run on computers it has not already run on, so in theory it will only run one time.&lt;span style=""&gt;  &lt;/span&gt;Hope we don’t have too many failures.&lt;span style=""&gt;  &lt;/span&gt;In any case it was no big deal.&lt;span style=""&gt;  &lt;/span&gt;We updated the ITMU, and then updated the distribution points.&lt;span style=""&gt;  &lt;/span&gt;We did note was that the old admin was not using every site server as a DP for this package.&lt;span style=""&gt;  &lt;/span&gt;Since we didn’t see a reason not to have the package on every DP we fixed that issue.&lt;span style=""&gt;  &lt;/span&gt;One final note is that I couldn’t find evidence of the package running on my test system.&lt;span style=""&gt;  &lt;/span&gt;But mine already had the updated WUA so maybe it did.&lt;span style=""&gt;  &lt;/span&gt;I have the other admin check his test box tomorrow and then we’ll change the advertisement back to use our normal collection. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-7460109033861075128?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/7460109033861075128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=7460109033861075128' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7460109033861075128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/7460109033861075128'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/itmu-update-goes-smoothly.html' title='ITMU update goes smoothly'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8398726618923989943</id><published>2007-01-25T08:26:00.000-08:00</published><updated>2007-01-25T08:30:11.783-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Heartbeat Discovery'/><category scheme='http://www.blogger.com/atom/ns#' term='Discover Clients'/><category scheme='http://www.blogger.com/atom/ns#' term='Active Directory System Discovery'/><category scheme='http://www.blogger.com/atom/ns#' term='Discovery Methods'/><title type='text'>Day 9: Heartbeat Discovery</title><content type='html'>So I’m ready to install ITMU on my test setup and I get to the point where it asks for a sync client.&lt;span style=""&gt;  &lt;/span&gt;I decide to use the site server (against Microsoft advice, but it’s the way our production environment is currently configured).&lt;span style=""&gt;  &lt;/span&gt;My problem is that the ITMU setup says that my site server is not a client.&lt;span style=""&gt;  &lt;/span&gt;I double check the All Systems collection and I see it.&lt;span style=""&gt;  &lt;/span&gt;But upon closer inspection the Site Code column is empty and the Client column says No.&lt;span style=""&gt;  &lt;/span&gt;In fact is also says this for my actual xp client machine that is in the test domain.&lt;span style=""&gt;  &lt;/span&gt;So I run ccmsetup.exe from \\siteserver\smsclient\i386 .&lt;span style=""&gt;  &lt;/span&gt;Client is installed.&lt;span style=""&gt;  &lt;/span&gt;Start&gt;Control panel&gt;Systems Management.&lt;span style=""&gt;  &lt;/span&gt;On the advanced tab, the currently assigned to site code field is empty.&lt;span style=""&gt;  &lt;/span&gt;I click discover.&lt;span style=""&gt;  &lt;/span&gt;Viola!&lt;span style=""&gt;  &lt;/span&gt;It discovers my test site.&lt;span style=""&gt;  &lt;/span&gt;Switch back to the SMS console&gt;Collections&gt;All Systems.&lt;span style=""&gt;  &lt;/span&gt;No change.&lt;span style=""&gt;  &lt;/span&gt;How disappointing.&lt;span style=""&gt;  &lt;/span&gt;F5.&lt;span style=""&gt;  &lt;/span&gt;No Change.&lt;span style=""&gt;  &lt;/span&gt;More disappointed.&lt;span style=""&gt;  &lt;/span&gt;Right click&gt;All tasks&gt;Update Collection Membership.&lt;span style=""&gt;  &lt;/span&gt;No Change.&lt;span style=""&gt;  &lt;/span&gt;This is starting to bother me.&lt;span style=""&gt;  &lt;/span&gt;Right click on the client&gt;Trigger Discovery Data (you need the right click tools installed for this option to be available).&lt;span style=""&gt;  &lt;/span&gt;Get the Right click tools from Stuart Watret at &lt;a href="http://offshore-it.co.uk/"&gt;http://offshore-it.co.uk/&lt;/a&gt; .&lt;span style=""&gt;  &lt;/span&gt;Still No Change.&lt;span style=""&gt;  &lt;/span&gt;Back to the client&gt;Systems Management&gt;Actions tab&gt; Hardware Inventory Cycle&gt; Initiate Action.&lt;span style=""&gt;  &lt;/span&gt;Come back an hour later.&lt;span style=""&gt;  &lt;/span&gt;No Change.&lt;span style=""&gt;  &lt;/span&gt;I go back and forth before I put my time tested Googling skills to use.&lt;span style=""&gt;  &lt;/span&gt;Google: collections client no sms installed.&lt;span style=""&gt;  &lt;/span&gt;4&lt;sup&gt;th&lt;/sup&gt; link down has the answer.&lt;span style=""&gt;  &lt;/span&gt;It’s the heartbeat discovery.&lt;span style=""&gt;  &lt;/span&gt;Not really sure how it differs from the AD System Discovery but it does.&lt;span style=""&gt;  &lt;/span&gt;SMS console&gt;Site Settings&gt;Discovery Methods&gt;Heartbeat Discovery&gt;Right Click&gt;Properties.&lt;span style=""&gt;  &lt;/span&gt;It’s enabled, but by default set to once every 7 days.&lt;span style=""&gt;  &lt;/span&gt;Since this is my test site, switch it to once every hour.&lt;span style=""&gt;  &lt;/span&gt;Back on the client side&gt; actions tab&gt; Discovery Data Collection Cycle&gt; Initiate Action.&lt;span style=""&gt;  &lt;/span&gt;Back to the Site Server.&lt;span style=""&gt;  &lt;/span&gt;Collections&gt;All Systems&gt;All tasks&gt;Update Collection Membership.&lt;span style=""&gt;  &lt;/span&gt;Ahhhh.&lt;span style=""&gt;  &lt;/span&gt;Sweet SMS goodness. Instantly the two systems show up as assigned, client = yes, client type = advanced, etc.&lt;span style=""&gt;  &lt;/span&gt;It all looks good.&lt;span style=""&gt;  &lt;/span&gt;Back to ITMU!  &lt;p class="MsoNormal"&gt;I really need to get the SMS administrators book and figure out how all this should work. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8398726618923989943?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8398726618923989943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8398726618923989943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8398726618923989943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8398726618923989943'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-9-heartbeat-discovery.html' title='Day 9: Heartbeat Discovery'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-28522105083890225</id><published>2007-01-23T08:58:00.000-08:00</published><updated>2007-01-23T09:01:37.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMS Site Component Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS_SITE_COMPONENT_MANAGER'/><category scheme='http://www.blogger.com/atom/ns#' term='error 4909'/><category scheme='http://www.blogger.com/atom/ns#' term='Service account'/><category scheme='http://www.blogger.com/atom/ns#' term='System Management container'/><title type='text'>Day 8: Critical Error 4909</title><content type='html'>&lt;o:p&gt;&lt;/o:p&gt;So today my test site server was showing critical error 4909 with description:     &lt;p class="MsoNormal"&gt;SMS Systems Management Server could not locate the "System Management" container in Active Directory.&lt;span style=""&gt;  &lt;/span&gt;Nor could it create a default container.&lt;span style=""&gt;  &lt;/span&gt;This will prevent Site Component Manager from updating or adding any objects to Active Directory.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Possible cause: This site’s&lt;span style=""&gt;  &lt;/span&gt;SMS Service account or the site server’s machine account might not have the correct rights to update active directory.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Solution: Either give the Service Account rights to update the domain's System Container, or manually create the "System Management" container in this domain's Active Directory system container, and give the Service Account full rights to that container (and all children objects.)&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Since I’m knew at this stuff I had to figure out what it meant to give rights to the system account in AD.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Well after a bit of googling (googled: create the System Management container, 5&lt;sup&gt;th&lt;/sup&gt; link down), I came across this Microsoft KB article.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://support.microsoft.com/kb/830022/en-us?spid=2890&amp;sid=global"&gt;http://support.microsoft.com/kb/830022/en-us?spid=2890&amp;amp;sid=global&lt;/a&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Step by step instructions.&lt;span style=""&gt;  &lt;/span&gt;Basically in AD, you have to give the computer that SMS installed on, rights to the “System” folder aka container.&lt;span style=""&gt;  &lt;/span&gt;Make sure you give it permissions to all child objects as well.&lt;span style=""&gt;  &lt;/span&gt;If you’ve done it right, there is a new container object under System called…..System Management&lt;/p&gt;      &lt;p class="MsoNormal"&gt;The end of the instructions instruct you to Restart the SMS Site Component Manager service to start updating Active Directory. &lt;span style=""&gt; &lt;/span&gt;Of course Microsoft fails to mention how to do this, and the only people who need to know are the ones who don’t have SMS working i.e. meaning people who just installed it and may not know how to check a SMS service.&lt;span style=""&gt;  &lt;/span&gt;Guess I can be nice and tell you.&lt;span style=""&gt;  &lt;/span&gt;Back in the SMS console expand the site database&gt;Tools&gt;SMS Service Manager.&lt;span style=""&gt;  &lt;/span&gt;You’ll see an empty pane.&lt;span style=""&gt;  &lt;/span&gt;Very intuitive isn’t it?&lt;span style=""&gt;  &lt;/span&gt;Anyways right click in the empty pane&gt;All Tasks&gt; Start SMS Service Manager.&lt;span style=""&gt;  &lt;/span&gt;Expand your site&gt;Servers&gt; Machine name of your site&gt;&lt;span style=""&gt;  &lt;/span&gt;Pick the SMS_SITE_COMPONENT_MANAGER.&lt;span style=""&gt;  &lt;/span&gt;Now things get really silly.&lt;span style=""&gt;  &lt;/span&gt;You can’t tell if it’s running or not unless you query it first.&lt;span style=""&gt;  &lt;/span&gt;Pick the component from the rights side and hit the query (!) button.&lt;span style=""&gt;  &lt;/span&gt;Now that you can see it running, you can stop it.&lt;span style=""&gt;  &lt;/span&gt;You’ll have to query it again to see that it actually did stop.&lt;span style=""&gt;  &lt;/span&gt;Then you can hit Start, query it again to make sure it started.&lt;span style=""&gt;  &lt;/span&gt;Now switch back to AD and check your new System Management container to see if SMS has put anything in there.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-28522105083890225?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/28522105083890225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=28522105083890225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/28522105083890225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/28522105083890225'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-8-critical-error-4909.html' title='Day 8: Critical Error 4909'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-6830999648962355577</id><published>2007-01-21T16:29:00.000-08:00</published><updated>2007-01-21T16:36:01.072-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='SID'/><category scheme='http://www.blogger.com/atom/ns#' term='Test Environment'/><category scheme='http://www.blogger.com/atom/ns#' term='NewSID'/><category scheme='http://www.blogger.com/atom/ns#' term='sysinternals'/><title type='text'>Day Seven: Test Environment is working</title><content type='html'>Well I finally got the test environment up and running.&lt;span style=""&gt;  &lt;/span&gt;Had a little trouble because I forgot to change the SID on one of my VM machines.&lt;span style=""&gt;  &lt;/span&gt;I took a shortcut and copied the VM machine folder instead of reinstalling windows 3 times.&lt;span style=""&gt;  &lt;/span&gt;This of course caused trust issues with the domain since all the workstations had the same SID.&lt;span style=""&gt;  &lt;/span&gt;Symptoms of this phenomenon include not being able to login to the domain on the workstation, and the domain administrators group not being included in the Local Administrators group of the workstation.&lt;span style=""&gt;  &lt;/span&gt;The quickest way to resolve this is to move the machine back into a workgroup, Reboot, Run NewSID (&lt;a href="http://www.microsoft.com/technet/sysinternals/Utilities/NewSid.mspx"&gt;http://www.microsoft.com/technet/sysinternals/Utilities/NewSid.mspx&lt;/a&gt;), Rejoin the domain, Reboot (again), and try to login using a domain account.  &lt;p class="MsoNormal"&gt;Sidenote:&lt;span style=""&gt;  &lt;/span&gt;NewSID is an excellent tool developed by Mark Russinovich &lt;span style=""&gt; &lt;/span&gt;and Bryce Cogswell.&lt;span style=""&gt;  &lt;/span&gt;It’s an interesting fact that Microsoft does not actually support the use of NewSID despite is availability from the Microsoft website.&lt;span style=""&gt;  &lt;/span&gt;This is due to the fact that NewSID was developed by Mark and Bryce under their own company, Winternals.&lt;span style=""&gt;  &lt;/span&gt;Microsoft bought them up and allowed them to rerelease their tools on Microsoft Technet with the disclaimer that it is not actually supported by Microsoft.&lt;span style=""&gt;  &lt;/span&gt;Personally, I’ve used NewSID quite a bit and have never had an issue.&lt;span style=""&gt;  &lt;/span&gt;However, if you wish to do things the right way, then Microsoft recommends running Sysprep.&lt;span style=""&gt;  &lt;/span&gt;This tool will actually do lot more then generate a new random SID, so I’d advise just using NewSID.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Back to SMS and my test environment.&lt;span style=""&gt;  &lt;/span&gt;Tomorrow I plan to apply SP2 to SMS and install the first revision of ITMU to accurately reflect the production environment.&lt;span style=""&gt;  &lt;/span&gt;A quick patch update test should show everything working the same as it does in production.&lt;span style=""&gt;  &lt;/span&gt;Then apply ITMU ver. 3 and another update test.&lt;span style=""&gt;  &lt;/span&gt;If all goes well, I’ll be updating ITMU on the production server real soon. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-6830999648962355577?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/6830999648962355577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=6830999648962355577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6830999648962355577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/6830999648962355577'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-seven-test-environment-is-working.html' title='Day Seven: Test Environment is working'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-3750040063565774203</id><published>2007-01-18T19:29:00.001-08:00</published><updated>2007-01-18T19:29:19.103-08:00</updated><title type='text'>Day Five and Six:  ITMU and the Test Environment.</title><content type='html'>Hey can you look into updating to ITMU v. 3?&lt;span style=""&gt;  &lt;/span&gt;I think we need it by March.&lt;span style=""&gt;  &lt;/span&gt;I actually got this email from admin no. 3 a couple of days before we did the patch update.&lt;span style=""&gt;  &lt;/span&gt;It was the first time I had heard of the Inventory Tool for Microsoft Updates aka ITMU.&lt;span style=""&gt;  &lt;/span&gt;Researching what it was and why it need to be updated by March actually really helped out with the patch updates we did, since I had some idea of how Microsoft intended the monthly updates to be deployed. Guess what?&lt;span style=""&gt;  &lt;/span&gt;It really does need to be in place by March.&lt;span style=""&gt;  &lt;/span&gt;Microsoft will stop updating the old one and ITMU will break if we don’t update.&lt;span style=""&gt;  &lt;/span&gt;Lucky me, I get a chance to break our patch system within the next 2 months.&lt;span style=""&gt;  &lt;/span&gt;Actually, I don’t think it will be a big issue.&lt;span style=""&gt;  &lt;/span&gt;We already have ITMU installed, so we meet all the current prerequisites.&lt;span style=""&gt;  &lt;/span&gt;Version 3 has the same requirements, so we’ll just need to walk through the install.&lt;span style=""&gt;  &lt;/span&gt;However, being the good little admin that I am, I pushed that we needed to walk through it on the test environment first.&lt;span style=""&gt;   &lt;/span&gt;No problem, since it’s all on Virtual Machines.&lt;span style=""&gt;  &lt;/span&gt;Well it wouldn’t have been a problem, until I found out that the old admin wiped all his boxes the day he left.&lt;span style=""&gt;   &lt;/span&gt;His SMS test environment was completely lost.&lt;span style=""&gt;  &lt;/span&gt;No DC, no parent site server, no child site server, and no clients.  &lt;p class="MsoNormal"&gt;Needless to say, days five and six have been an excruciatingly long effort to recreate the SMS test environment.&lt;span style=""&gt;  &lt;/span&gt;Everything from installing Win2k3, Active Directory, Creating user accounts, Installing SQL server, IIS, BITS, SMS, SMS SP2, etc.&lt;span style=""&gt;  &lt;/span&gt;You have to extend the AD schema?&lt;span style=""&gt;  &lt;/span&gt;Give the SMS computer permissions to AD?&lt;span style=""&gt;  &lt;/span&gt;Who came up with this insane procedure?&lt;span style=""&gt;  &lt;/span&gt;I’ve installed SMS before, but I always hate doing it.&lt;span style=""&gt;  &lt;/span&gt;I keep promising myself, this will be the last time.&lt;span style=""&gt;  &lt;/span&gt;I’ll make nice backups of my VM’s and find some place to store them.&lt;span style=""&gt;  &lt;/span&gt;Yeah right, in 9 months I’ll have a need to start over.&lt;span style=""&gt;  &lt;/span&gt;Something will break and it’ll be easier to do a clean install than fix it.&lt;span style=""&gt;  &lt;/span&gt;I didn’t quite finish today, so the whole thing will be waiting for me tomorrow.&lt;span style=""&gt;  &lt;/span&gt;I hope I don’t hit any walls. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-3750040063565774203?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/3750040063565774203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=3750040063565774203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3750040063565774203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/3750040063565774203'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-five-and-six-itmu-and-test.html' title='Day Five and Six:  ITMU and the Test Environment.'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-1047185309818131556</id><published>2007-01-17T22:31:00.000-08:00</published><updated>2007-01-21T16:38:15.411-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Registry Key'/><category scheme='http://www.blogger.com/atom/ns#' term='Reboot'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Zone'/><category scheme='http://www.blogger.com/atom/ns#' term='RebootRequired'/><title type='text'>Day Four con’t:  The 2nd meeting</title><content type='html'>The second meeting we had yesterday (why does every company have so many meetings?), involved scheduling the patches for the rest of the company.&lt;span style=""&gt;  &lt;/span&gt;At our company we actually send out 3 packages at once.&lt;span style=""&gt;  &lt;/span&gt;The first package is the patch notice.&lt;span style=""&gt;  &lt;/span&gt;It informs our customers (IT world translation: end-user) that their machine is part of the SMS patch program and is targeted to receive the latest patches.&lt;span style=""&gt;  &lt;/span&gt;It also gives instructions for calling helpdesk (I’m sure helpdesk is thrilled that we give that extension out every month to every customer).&lt;span style=""&gt;  &lt;/span&gt;The notice is available  starting at 8:00am and the advertisement runs for 8 hours (5:00pm).&lt;span style=""&gt;  &lt;/span&gt;If the customer clicks okay, or 8 hours passes and the notice closes itself, the program package ran successfully.&lt;span style=""&gt;  &lt;/span&gt;At 11:00pm, the Microsoft Patch Update program runs.&lt;span style=""&gt;  &lt;/span&gt;This is the same program created and updated by ITMU.&lt;span style=""&gt;  &lt;/span&gt;We advertise it to run for 3 days.&lt;span style=""&gt;  &lt;/span&gt;It ends at 10:00am on the 3rd day.&lt;span style=""&gt;  &lt;/span&gt;This way we catch laptop users and people who take a short week.&lt;span style=""&gt;  &lt;/span&gt;The third program is advertised starting on the 2nd day.&lt;span style=""&gt;  &lt;/span&gt;This is a reboot notice.&lt;span style=""&gt;  &lt;/span&gt;We don’t actually reboot machines, instead we let the customer&lt;span style=""&gt;  &lt;/span&gt;do it. The reboot notice checks the registry to see if the customer has a patch pending reboot.&lt;span style=""&gt;  &lt;/span&gt; Patches that quit with exit code 3010 will create a temporary reg key for that update: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\WindowsUpdate\AutoUpdate\RebootRequired\DWORD value of each update ID that requires a reboot and sets the value to 1.&lt;span style=""&gt;  &lt;/span&gt;If we don’t find a key = 1 then the reboot notice is suppressed.&lt;span style=""&gt;  &lt;/span&gt;If there is valid reboot key, then we display a notice that alerts the customer.&lt;span style=""&gt;  &lt;/span&gt;The customer may delay the reboot by clicking okay, but not kill the notice.&lt;span style=""&gt;  &lt;/span&gt;It will pop up again later, until a reboot happens, or the advertisement expires, 8 hours later.&lt;br /&gt;Get the script from Microsoft here:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wua_sdk/wua/using_wua_to_scan_for_updates_offline.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wua_sdk/wua/using_wua_to_scan_for_updates_offline.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We had 4 different collections to setup of all 3 package advertisements for.&lt;span style=""&gt;  &lt;/span&gt;The first one went out to the entire systems group.&lt;span style=""&gt;  &lt;/span&gt;It was one last chance to find a problem before hitting the rest of the company, so all of its packages are advertised one day earlier.&lt;span style=""&gt;  &lt;/span&gt;The second group was our normal internal lan.&lt;span style=""&gt;  &lt;/span&gt;Known as the Business Network, it hits all our standard operational departments (marketing, accounting, contracts, etc.).&lt;span style=""&gt;  &lt;/span&gt;The third group was our developer network.&lt;span style=""&gt;  &lt;/span&gt;Our developers are currently given a choice about having SMS update their system.&lt;span style=""&gt;  &lt;/span&gt;The ones who opt out must be able to provide a valid reason, so we separated the entire network to make administration a little easier when dealing with the rest of the company.&lt;span style=""&gt;  &lt;/span&gt;The last network was our RO’s (Regional Offices).&lt;span style=""&gt;  &lt;/span&gt;We’ll probably roll them into the business network eventually, but for now they are separate.  &lt;p class="MsoNormal"&gt;We did hit an issue with the RO’s, the old admin had a 3 hour time difference for some parts of the patches but not for all.&lt;span style=""&gt;  &lt;/span&gt;We spent an hour debating if SMS used the Parent Site time, the Child Site time, the DP time, or the client time.&lt;span style=""&gt;  &lt;/span&gt;While we were certain that most machines in the lan were joined to the domain and therefore had the right time, we couldn’t be as sure about the RO’s.&lt;span style=""&gt;  &lt;/span&gt;Also, if all the RO’s are in one collection and we start something at 8:00 am our time (Pacific), then it really starts at 11:00 eastern.&lt;span style=""&gt;  &lt;/span&gt;If we start it at 5:00 am our time then how does that affect things that are expected to run until 5:00pm since they would now be ending at 2:00pm.&lt;span style=""&gt;  &lt;/span&gt;At one point Admin no. 2 thought that checking the Greenwich Mean Time checkbox would be a good idea.&lt;span style=""&gt;  &lt;/span&gt;We eventually convinced him that it wasn’t.&lt;span style=""&gt;  &lt;/span&gt;We finally settled on running the notices at the earlier adjusted time, but running the patch at our local 11:00pm time, which was 8:00pm eastern.&lt;span style=""&gt;  &lt;/span&gt;Anybody still working at 8:00 and noticing a slowdown should just call it quits for the day. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-1047185309818131556?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/1047185309818131556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=1047185309818131556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1047185309818131556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1047185309818131556'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-four-cont-2nd-meeting.html' title='Day Four con’t:  The 2nd meeting'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-2772191721931348949</id><published>2007-01-16T17:00:00.000-08:00</published><updated>2007-01-17T21:46:14.196-08:00</updated><title type='text'>Day Four:  SMS success!</title><content type='html'>Maybe SMS success is an oxymoron.&lt;span style=""&gt;  &lt;/span&gt;My current measure of success is not breaking the existing infrastructure.&lt;span style=""&gt;  &lt;/span&gt;Deploying a package is just extra icing on the cake.    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;One thing I forgot to mention is that just before we left on Friday we did create a test collection with two test machines.&lt;span style=""&gt;  &lt;/span&gt;Then we created the test advertisement and crossed our fingers.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;Monday was a holiday for us.&lt;span style=""&gt;  &lt;/span&gt;So today was our first chance to see if the patch deployed.&lt;span style=""&gt;  &lt;/span&gt;I came in, checked my test machine and there was our custom made post patch reboot message.&lt;span style=""&gt;  &lt;/span&gt;Firing up the SMS console revealed that the packages ran successfully (not that I expected anything less).&lt;br /&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;The best way (that I’ve found) to figure out if your packages ran on a test group is to open up the console, expand the Site Database&gt;System Status&gt;Advertisement Status.&lt;span style=""&gt;  &lt;/span&gt;Select the advertisement you’re interested in checking.&lt;span style=""&gt;  &lt;/span&gt;Then in the right pane you can see the how many clients received the package, how many started it, success, failures, etc.&lt;span style=""&gt;  &lt;/span&gt;If you want to get really detailed you can right click on your site&gt;show messages&gt;all.&lt;span style=""&gt;  &lt;/span&gt;I usually only need to look at the last day or two but you can go back further if you need to.&lt;span style=""&gt;  &lt;/span&gt;The description column will report back every action that was taken and the results of that action.&lt;span style=""&gt;  &lt;/span&gt;I think it’s better then any of the reports I’ve found.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;Since it was the first day of the week, it was time for the meetings to start.&lt;span style=""&gt;  &lt;/span&gt;First meeting: Discuss the implementation of SMS in one of our classrooms.&lt;span style=""&gt;  &lt;/span&gt;The Sys admin for the classrooms manages 5 classrooms of 16 machines each.&lt;span style=""&gt;  &lt;/span&gt;They are firewalled off from the rest of the company, but holes can be opened up for specific needs.&lt;span style=""&gt;  &lt;/span&gt;He’s still using ghost to re-image the machines before every class.&lt;span style=""&gt;  &lt;/span&gt;The problem is, he has 16 different images and some of them fall behind in patch levels.&lt;span style=""&gt;  &lt;/span&gt;The old admin started a project to get SMS implemented in these classrooms.&lt;span style=""&gt;  &lt;/span&gt;After hunting around for a few days we found the servers.&lt;span style=""&gt;  &lt;/span&gt;He setup a child site and a separate machine for dp.&lt;span style=""&gt;  &lt;/span&gt;We figured the child site is inside our internal firewall and the dp is on the classroom side of the firewall.&lt;span style=""&gt;  &lt;/span&gt;At this point we assume the correct ports have been opened, guess we’ll find out.&lt;span style=""&gt;  &lt;/span&gt;A little bit of discussion and we determine that he can automatically run the sms client install after ghosting.&lt;span style=""&gt;  &lt;/span&gt;Now things get interesting.&lt;span style=""&gt;  &lt;/span&gt;How do we schedule advertisements such that, the machines are kept up-to-date but no patching takes place while a class is in session.&lt;span style=""&gt;  &lt;/span&gt;It occurs to me that if he can run a command line automatically after patching then we have a patch solution in place already, currently in use by our new computer deployment team.&lt;span style=""&gt;  &lt;/span&gt;They use a combination of a WSUS (Windows Server Update Services) Server and a script that updates the Automatic Updates client, forces all the settings, connects to the WSUS server, updates, reboots, logins and continues until the machine is patched.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;WSUS?&lt;span style=""&gt;  &lt;/span&gt;Isn’t that SMS blasphemy?&lt;span style=""&gt;  &lt;/span&gt;Well hold on before you crucify me.&lt;span style=""&gt;  &lt;/span&gt;Remember all we are really interested in, is patching classroom machines that get re-imaged several times a week.&lt;span style=""&gt;  &lt;/span&gt;The software is already installed on the images and we are not patching non-Microsoft products.&lt;span style=""&gt;  &lt;/span&gt;Plus this solves the scheduling problem, since the patching takes place automatically, immediately after imaging. &lt;span style=""&gt; &lt;/span&gt;It’s the right tool for this job.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;The idea is well received by the other admins.&lt;span style=""&gt;  &lt;/span&gt;In the end we agree that SMS is still important to implement, we want the reporting and we see the benefit of creating software packages for the future, and one day we may switch him from Ghost to OSD.&lt;span style=""&gt;  &lt;/span&gt;Plus it buys us time for him to get the images updated with the client.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;Meeting Two will have to wait until my next post.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-2772191721931348949?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/2772191721931348949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=2772191721931348949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2772191721931348949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2772191721931348949'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-four-sms-success.html' title='Day Four:  SMS success!'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-2304907740049763099</id><published>2007-01-14T13:03:00.000-08:00</published><updated>2007-01-14T18:05:27.636-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kb925523'/><category scheme='http://www.blogger.com/atom/ns#' term='927198'/><category scheme='http://www.blogger.com/atom/ns#' term='kb925524'/><category scheme='http://www.blogger.com/atom/ns#' term='January patches'/><category scheme='http://www.blogger.com/atom/ns#' term='DSUW'/><category scheme='http://www.blogger.com/atom/ns#' term='ITMU'/><category scheme='http://www.blogger.com/atom/ns#' term='MS07-002'/><title type='text'>Day Three:  Reality check</title><content type='html'>Did I say SMS administration wasn’t a full time job and that ITMU was the end all savior answer to our SMS prayers?&lt;span style=""&gt;  &lt;/span&gt;Time for that reality check.  &lt;p class="MsoNormal"&gt;So here’s what actually happened on Friday.&lt;span style=""&gt;  &lt;/span&gt;I setup a meeting with admin 2 and 3.&lt;span style=""&gt;  &lt;/span&gt;I bring my laptop and a projector so we can all see what’s going on.&lt;span style=""&gt;  &lt;/span&gt;Combined with the patch update document left by the last admin and a little knowledge based on my readings about ITMU, we figured an hour was plenty of time to setup the patch advertisement.&lt;span style=""&gt;  &lt;/span&gt;Just to be sure I blocked out an hour and half for the meeting.&lt;span style=""&gt;  &lt;/span&gt;On our agenda: update the existing Microsoft Update patch package to include the January patches, and advertise it to a test group.&lt;span style=""&gt;  &lt;/span&gt;The patches themselves had already been tested and approved for our environment.&lt;span style=""&gt;  &lt;/span&gt;Our job was to simply integrate it into SMS and start the monthly company patching process.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here’s Microsoft’s diagram on how this should work:&lt;span style=""&gt;  &lt;/span&gt;&lt;a href="https://www.microsoft.com/smserver/techinfo/administration/20/using/suspackhowto.mspx"&gt;https://www.microsoft.com/smserver/techinfo/administration/20/using/suspackhowto.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So looking at the document left by the old admin and dated July 2006, we think we have a pretty good handle on how to start this process.&lt;span style=""&gt;  &lt;/span&gt;Step 1&gt; Right click on the correct advertisement and choose the option to distribute software updates.&lt;span style=""&gt;  &lt;/span&gt;Well which advertisement is the correct one?&lt;span style=""&gt;  &lt;/span&gt;Certainly not the one for the entire company.&lt;span style=""&gt;  &lt;/span&gt;But, there doesn’t appear to be a good test advertisement setup.&lt;span style=""&gt;  &lt;/span&gt;How can this be?&lt;span style=""&gt;  &lt;/span&gt;Obviously, something is wrong with this document and we’re only on step one.&lt;span style=""&gt;  &lt;/span&gt;Okay, no problem.&lt;span style=""&gt;   &lt;/span&gt;We are three very bright admins (there are 30 Systems Administrators at this company), and the each of the three of us would definitely rank within the top five category for our company.&lt;span style=""&gt;  &lt;/span&gt;Surely we can figure this out and move on.&lt;span style=""&gt;  &lt;/span&gt;We start by exploring the options available for every type of object.&lt;span style=""&gt;  &lt;/span&gt;Strangely, distribute software updates is available via packages, collections, and advertisements.&lt;span style=""&gt;  &lt;/span&gt;Well, we know we want to update the package, so let’s proceed from there.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Step two: Pick the correct scanning tool (the screenshot show MBSA).&lt;span style=""&gt;  &lt;/span&gt;We’ll that doesn’t strike us as correct.&lt;span style=""&gt;  &lt;/span&gt;The DSUW has Microsoft Updates already listed, and based on what comes up in the rest of the wizard (yes we poked around), it appears to default to the values chosen the last time it was run.&lt;span style=""&gt;  &lt;/span&gt;Additionally, Microsoft’s ITMU documents also appear to use Microsoft Updates.&lt;span style=""&gt;  &lt;/span&gt;Keep in mind, our company has had SMS in place for 4 years now.&lt;span style=""&gt;  &lt;/span&gt;The list of scanning tools available include MBSA, Windows update, Office update, and Microsoft Update.&lt;span style=""&gt;  &lt;/span&gt;Our best guess, Microsoft Update supersedes all the other tools since it combines the features of Windows Update and Office Updates in order to Update both in one shot.&lt;span style=""&gt;  &lt;/span&gt;This conclusion was reached based on our knowledge of the difference between Windows Update, Office Update, and Microsoft Update’s respective websites.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Moving on to step three:&lt;span style=""&gt;  &lt;/span&gt;Pick the Q number of the patches to include in your package.&lt;span style=""&gt;  &lt;/span&gt;Our understanding at this point is that the sync tool has already run and these patches should already be in the package source.&lt;span style=""&gt;  &lt;/span&gt;Click a couple of corresponding checkboxes and move on.&lt;span style=""&gt;  &lt;/span&gt;How wrong we were.&lt;span style=""&gt;  &lt;/span&gt;Since the patch test group had already downloaded the patches and tested them, I know the network share to look at and find the appropriate patches.&lt;span style=""&gt;  &lt;/span&gt;They are kept in the share and organized by year and then by Microsoft Bulletin number.&lt;span style=""&gt;  &lt;/span&gt;Example is &lt;a href="file://///share/2007/MS07-002"&gt;\\share\2007\MS07-002&lt;/a&gt; .&lt;span style=""&gt;  &lt;/span&gt;This folder refers to this bulletin: &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS07-002.mspx"&gt;http://www.microsoft.com/technet/security/Bulletin/MS07-002.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;As you can see in the bulletin the Office 2000 version of the patch is KB925524.&lt;span style=""&gt;  &lt;/span&gt;The network share lists each file that was downloaded and the first file in the list is office2000-kb925524-fullfile-enu.exe.&lt;span style=""&gt;  &lt;/span&gt;Cool, let’s type that into the filter and check the box!&lt;span style=""&gt;   &lt;/span&gt;Only problem is, 925524 doesn’t return any results.&lt;span style=""&gt;  &lt;/span&gt;How can this be?&lt;span style=""&gt;  &lt;/span&gt;Did the sync tool not run?&lt;span style=""&gt;  &lt;/span&gt;We need to check things out.&lt;span style=""&gt;  &lt;/span&gt;So we spend the next hour looking for reports, queries, advertisements status queries, checking package source folders etc.&lt;span style=""&gt;  &lt;/span&gt;As best as we can tell, the sync tool ran on 01/09/07, aka patch Tuesday.&lt;span style=""&gt;  &lt;/span&gt;So where in the world is 925524?&lt;span style=""&gt;  &lt;/span&gt;Shouldn’t it be in there?&lt;span style=""&gt;  &lt;/span&gt;Can Microsoft make this any more difficult?&lt;span style=""&gt;  &lt;/span&gt;Why isn’t this working right?&lt;span style=""&gt;  &lt;/span&gt;I’m sure some of the SMS veterans and Security folks would get a real kick out of this train of thought.&lt;span style=""&gt;  &lt;/span&gt;An hour or so later it’s time to admit defeat and move on to the next one.&lt;span style=""&gt;  &lt;/span&gt;Excel 2002/xp number KB925523, comes up without an issue.&lt;span style=""&gt;  &lt;/span&gt;Check a bunch of boxes and we feel pretty damm good.&lt;span style=""&gt;  &lt;/span&gt;So what happened to 925524.&lt;span style=""&gt;  &lt;/span&gt;Let’s poke around some more.&lt;span style=""&gt;  &lt;/span&gt;It’s time to actually read the bulletin.&lt;span style=""&gt;  &lt;/span&gt;Look at that, MS07-002 has a number next to it: 927198.&lt;span style=""&gt;  &lt;/span&gt;Maybe that’s the Q number we should be typing in?&lt;span style=""&gt;  &lt;/span&gt;At this point, I admit we’re lost.&lt;span style=""&gt;  &lt;/span&gt;I type in every number I can find, check the boxes that come up and ignore the ones that don't.&lt;span style=""&gt;  &lt;/span&gt;Hopefully the old admin will answer our emails before we deploy to the company.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The rest of the process pretty much proceeds as expected.&lt;span style=""&gt;  &lt;/span&gt;Updates get downloaded.&lt;span style=""&gt;  &lt;/span&gt;DP’s get updated.&lt;span style=""&gt;  &lt;/span&gt;We choose not to update the collections and advertisements, because we want to do it ourselves and not screw up the company (yet).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The hour long meeting only took 4 hours!&lt;span style=""&gt;  &lt;/span&gt;This SMS stuff is easy as pie.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-2304907740049763099?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/2304907740049763099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=2304907740049763099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2304907740049763099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/2304907740049763099'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-three-reality-check.html' title='Day Three:  Reality check'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-8352987197700847234</id><published>2007-01-13T06:52:00.000-08:00</published><updated>2007-01-13T06:56:43.284-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Patching'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Updates'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Patches'/><category scheme='http://www.blogger.com/atom/ns#' term='ITMU'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS site'/><category scheme='http://www.blogger.com/atom/ns#' term='OSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Inventory Tool'/><title type='text'>Day Two: The SMS saga continues</title><content type='html'>It's my day off, but I want to go over some of the things that happened yesterday.&lt;br /&gt;&lt;br /&gt;I confess.&lt;span style=""&gt;  &lt;/span&gt;I do have some rudimentary understanding of how SMS works.&lt;span style=""&gt;  &lt;/span&gt;Before the old Admin left I had worked with him on creating a package for deploying Microsoft Project 2003.&lt;span style=""&gt;  &lt;/span&gt;Also, as I’ve said before, I did most of the implementation of the OSD Feature Pack.&lt;span style=""&gt;  &lt;/span&gt;Just to give you an idea of where I’m coming from, since we currently do our deployments using the OSD deployment CD, there are no collections or advertisements involved.&lt;span style=""&gt;  &lt;/span&gt;Also, Image packages are slightly different than regular packages.&lt;span style=""&gt;  &lt;/span&gt;Not much, but enough so that Microsoft has made it a different object within SMS.  &lt;p class="MsoNormal"&gt;I also did find some of the documentation left behind by the old admin.&lt;span style=""&gt;  &lt;/span&gt;As I alluded to in my first post, this documentation was buried in a sea of files that dated back to 2003.&lt;span style=""&gt;  &lt;/span&gt;Many of the processes and procedures that were documented were no longer relevant.&lt;span style=""&gt;  &lt;/span&gt;However, being the clever SMS admin that I now am, I sorted the documents by date and started working my way backwards from newest to oldest.&lt;span style=""&gt;  &lt;/span&gt;After 4 hours I had accomplished the task of putting a copy of the current and relevant documents in another network share, which I shared with newly minted SMS admin 2 and 3.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;What little jewels did I receive for my hard work?&lt;span style=""&gt;  &lt;/span&gt;Well besides a pat on the back there was an up-to-date copy of the current SMS Hierarchy.&lt;span style=""&gt;  &lt;/span&gt;Our site has close to 20 SMS servers!&lt;span style=""&gt;  &lt;/span&gt;Most are actual site servers with several primary and a couple of child sites.&lt;span style=""&gt;  &lt;/span&gt;Some are simply distribution points.&lt;span style=""&gt;  &lt;/span&gt;Is this the best setup?&lt;span style=""&gt;  &lt;/span&gt;Only time will tell.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In addition to the SMS Hierarchy, I managed to salvage a copy of our implementation of the Microsoft Patching procedure.&lt;span style=""&gt;  &lt;/span&gt;It had screen shots and detailed step-by-step instructions! Everything you would need to administer Microsoft Patches via SMS.&lt;span style=""&gt;  &lt;/span&gt;The old admin has actually installed ITMU (Inventory Tool for Microsoft Updates).&lt;span style=""&gt;  &lt;/span&gt;After a little reading up on ITMU, this little gem was going to be the answer to all our prayers.&lt;span style=""&gt;  &lt;/span&gt;ITMU will sync all the patches available on Microsoft update with the SMS server using a designated Syncing machine.&lt;span style=""&gt;  &lt;/span&gt;Then it updates the existing Microsoft Updates Tool package with the new patches.&lt;span style=""&gt;  &lt;/span&gt;After that it will allow you to test the patches on a pre-production environment.&lt;span style=""&gt;  &lt;/span&gt;Finally, it will allows you to deploy the updates to the rest of your machines.&lt;span style=""&gt;  &lt;/span&gt;Life was looking pretty sweet.&lt;span style=""&gt;  &lt;/span&gt;SMS isn’t really a full time job is it?&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Next time: Microsoft best practices and reality clash.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-8352987197700847234?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/8352987197700847234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=8352987197700847234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8352987197700847234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/8352987197700847234'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-two-sms-saga-continues.html' title='Day Two: The SMS saga continues'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4838417816426470642.post-1753091847702107407</id><published>2007-01-12T23:11:00.000-08:00</published><updated>2007-01-12T23:22:42.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DP'/><category scheme='http://www.blogger.com/atom/ns#' term='Install'/><category scheme='http://www.blogger.com/atom/ns#' term='Distribution Point'/><category scheme='http://www.blogger.com/atom/ns#' term='Management Point'/><category scheme='http://www.blogger.com/atom/ns#' term='Site Server'/><category scheme='http://www.blogger.com/atom/ns#' term='MP'/><category scheme='http://www.blogger.com/atom/ns#' term='Advertisements'/><category scheme='http://www.blogger.com/atom/ns#' term='Collections'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Packages'/><title type='text'>Day One: The SMS Admin has left the building</title><content type='html'>&lt;p class="MsoNormal"&gt;The SMS Admin has left the company.&lt;span style=""&gt;  &lt;/span&gt;There are no useful documents.&lt;span style=""&gt;  If your lucky there are some buried in the sea of network shares, but &lt;/span&gt;most are outdated or poorly written.&lt;span style=""&gt;  &lt;/span&gt;It’s Mission Impossible.&lt;span style=""&gt;  &lt;/span&gt;Your mission, should you choose to accept it, is to take over SMS and all of its associated projects and duties without bringing down the company.&lt;span style=""&gt;  &lt;/span&gt;No this isn’t really optional, but it’s the position I found myself in today, and with patch Tuesday already 3 days old the task wasn’t going to disappear to the bottom of my to-do list.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So what does one do when the reins of SMS have been handed over and the old admin isn’t around to ask questions?&lt;span style=""&gt;  &lt;/span&gt;I had a little experience with SMS since I helped implement the OSD feature pack.&lt;span style=""&gt;  &lt;/span&gt;One of the other Admins had experience since he helped install it (3 years ago).&lt;span style=""&gt;  &lt;/span&gt;Admin number 3 attended a couple of classes, but really didn’t have a clue regarding SMS.&lt;span style=""&gt;  &lt;/span&gt;It was crunch time and today was day one.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Step one: Install the SMS console.&lt;span style=""&gt;  &lt;/span&gt;This can be done on any machine and is used to connect to the SMS site server and DP.&lt;span style=""&gt;  &lt;/span&gt;You can cheat and use the console installed on the server, but who wants to do that?&lt;span style=""&gt;  &lt;/span&gt;It’s on the SMS CD but in the real world your SMS server is version 2003 and SP2 is installed.&lt;span style=""&gt;  &lt;/span&gt;The CD won’t help since the latest version is needed which you can get direct from Microsoft: &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=37B20B4B-DFEC-464D-908B-5D783E2370D3&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=37B20B4B-DFEC-464D-908B-5D783E2370D3&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;                &lt;/span&gt;Run SMS2003SP2.exe /x&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;                &lt;/span&gt;Autorun.exe will get the client tools installed and contains the latest version.&lt;span style=""&gt;  &lt;/span&gt;It’s probably backwards compatible.&lt;span style=""&gt;  &lt;/span&gt;So even if your previous admin wasn’t up to par, you can connect to the site server and administer SMS&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Step two:&lt;span style=""&gt;  &lt;/span&gt;Start the console and connect to your central site server.&lt;span style=""&gt;  &lt;/span&gt;Use the machine name when prompted not the site code.&lt;span style=""&gt;  &lt;/span&gt;If you didn’t get console on your local machine you can cheat and RDP to the SMS server.&lt;span style=""&gt;  &lt;/span&gt;You’ll need admin rights either way.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Step three: Look around and see what the previous admin left.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There are 3 primary terms to get familiar with in SMS.&lt;span style=""&gt;  &lt;/span&gt;1- Packages 2- Collections 3- Advertisements.&lt;/p&gt;  &lt;p class="MsoNormal" style="line-height: normal;"&gt;Packages:&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A package is a group of source files necessary to run a particular program.&lt;span style=""&gt;  &lt;/span&gt;In most cases you want the setup program files.&lt;span style=""&gt;  &lt;/span&gt;It also contains the command line to run.&lt;span style=""&gt;  &lt;/span&gt;A typical command line is msiexec /I foo.msi /qb.&lt;span style=""&gt;  &lt;/span&gt;Go ahead and make one.&lt;span style=""&gt;  &lt;/span&gt;You’ll be asked to update the Distribution Points with it.&lt;span style=""&gt;  &lt;/span&gt;Nothing is going to the clients so feel free.&lt;span style=""&gt;  &lt;/span&gt;A good harmless one has no source files just a command line: notepad.exe.&lt;span style=""&gt;  &lt;/span&gt;Just like start&gt;run&gt;notepad.exe this will cause notepad to pop up.&lt;span style=""&gt;  &lt;/span&gt;If you choose the option to run it under the system account instead of the local user account then nobody will see it, but it should appear in task manager when the all users option is checked.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Collections:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Collections are simply a group of computers.&lt;span style=""&gt;  &lt;/span&gt;It can have one or many computers in it.&lt;span style=""&gt;  &lt;/span&gt;Look for an existing test collection with computers you are familiar with.  Better yet, create a new one with one of your test machines in it.&lt;span style=""&gt;  &lt;/span&gt;You’re not gonna screw anything up by creating one.  Don't mess with any of the existing collections some of them are created with a SQL query.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Advertisements:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Advertisements tie Collections and Packages together.&lt;span style=""&gt;  &lt;/span&gt;This is where you can do damage.&lt;span style=""&gt;  &lt;/span&gt;Creating an Advert involves telling SMS which packages should go to which collections and when.&lt;span style=""&gt;  &lt;/span&gt;The wizard is pretty self explanatory, just make sure you pick your notepad package and the collection is your test collection.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Congrats you just did your first SMS deployment on the test server and didn’t bring down the company.&lt;span style=""&gt;  &lt;/span&gt;(you weren’t practicing on the production server were you?).&lt;span style=""&gt;  &lt;/span&gt;I’d call this a successful mission.  Coming up in Day 2: What the hell is going on with the SMS environment?&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4838417816426470642-1753091847702107407?l=smsimpossible.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smsimpossible.blogspot.com/feeds/1753091847702107407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4838417816426470642&amp;postID=1753091847702107407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1753091847702107407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4838417816426470642/posts/default/1753091847702107407'/><link rel='alternate' type='text/html' href='http://smsimpossible.blogspot.com/2007/01/day-one-sms-admin-has-left-building.html' title='Day One: The SMS Admin has left the building'/><author><name>Bill Phillips</name><uri>http://www.blogger.com/profile/08076067369375896504</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
