Posts

The End of an Era: VBScript, WMIC, and the "Feature on Demand" Future of Windows Server 2025

For nearly two decades, the safety net of any Windows Administrator was the assumption that "it's just built-in." No matter how locked down a server was, you could always count on Notepad, Calculator, and the Windows Scripting Host (CScript/WScript) being there. With the release of Windows Server 2025 last year, that assumption is officially dead. Now that many organizations are moving past the "wait and see" phase and starting their upgrades, we are seeing the real-world impact of Microsoft's list of removed and deprecated features . If you are still relying on legacy scripts (and if you read this site, you probably are), here is what is breaking in production environments right now. 1. VBScript is now a "Feature on Demand" (FOD) This is the big one. In Windows Server 2025, VBScript has been moved to a Feature on Demand status. "VBScript is available as an FOD... before its removal from the operating system in a later release...

From .vbs to .ps1: Why We Are Still Talking About VBScript in the Cloud Era (And How to Finally Let Go)

It has been a long time since the golden era of SMS 2003 and SQL Server 2005. If you are reading this on DotVBS , you likely landed here for one of two reasons. First, you might be maintaining a legacy environment that simply refuses to die. You have a server rack somewhere running an OS that hasn’t seen a patch in a decade, and a critical login script just failed. You needed that specific WMI query I wrote in 2008 to pull a hardware ID or fix a cache location. Second, you might be a systems engineer in transition. You grew up on On Error Resume Next and CreateObject("WScript.Shell") , but the world has moved on to cloud instances, CI/CD pipelines, and PowerShell. This post is for both of you. It’s ironic that a site dedicated to "Windows Systems Management" via VBScript is seeing a resurgence in traffic not because the technology is new, but because it is now "rare earth" knowledge. We are entering the long-tail end of VBScript's lifecycle. M...

Reading the SCCM Client GUID

Recently I encountered an issue with the SCCM client GUID missing from the  %windir%\SMSCFG.INI file. We wanted to write a script to put the GUID back, so I was asked how to read the SCCM Client GUID from a script or command line. VBScript: Set objWMIService = GetObject("winmgmts:\\.\root\ccm") Set colItems = objWMIService.ExecQuery("Select ClientID From CCM_Client") For Each objItem in colItems Wscript.Echo "Client ID" & objItem.ClientID Next WMIC via commandline: wmic /namespace:\\root\ccm path ccm_client get clientid PowerShell: Get-WMIObject -namespace root\ccm ccm_client clientid | Select-Object clientid Suggested Reading: MSDN Article on How to Get the Unique Identifier Value for a Client (Includes Code Snippets) MSDN Article on Using the Get-WMiObject Cmdlet About the Author Emmanuel Tsouris is a Systems Management veteran and Dev...

How to Troubleshoot SMS Client Install Errors

Often time, I'm asked how to troubleshoot SMS client installation errors. First thing I would recommend is to check WMI by running wmidiag.vbs on the troubled computer, be sure to run it under admin context. The beauty of wmidiag is, it tells you how to fix the problem. Secondly, if WMI is fine, look through the installation or client logs. About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from qualifying purchases at no...

SMS SQL for Last Hardware Inventory

The following SQL Query will return last HW Inventory date for a specific computer. Code is based on the client health queries by Paul Thomsen . -- Last hardware inventory select Name0, LastHWScan as 'HW Inventory' from v_R_System sys full join v_RA_System_SMSAssignedSites ass ON ass.resourceID=SYS.resourceID full join v_GS_WORKSTATION_STATUS WS ON WS.resourceID=sys.resourceID where client0=1 and Name0 = 'computername' About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his la...

SMS SQL for Last Discovery

The following SQL Query will return last discovery date for a specific computer. Code is based on the client health queries by Paul Thomsen . -- Last discovery date select Name0, AgentTime as 'Discovery' from v_R_System sys full join v_RA_System_SMSAssignedSites ass ON ass.resourceID=SYS.resourceID full join (select ResourceId, MAX(AgentTime) as AgentTime from v_AgentDiscoveries where agentname 'SMS Discovery Data Manager' AND agentname not like '%!_AD!_System%' ESCAPE'!' group by ResourceId) disc on disc.resourceid=sys.resourceid where client0=1 --and IsNULL(AgentTime,@NullVal)>@olddate and Name0 = 'computername' About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." ...

VBScript to Set SMS Client Cache Location

Need to set the SMS Client Cache Location? Well it's pretty easy, here's a basic VBScript to help you get started. This will set the Advanced Clients Cache Location, just be careful to set it correctly. Test, Test, Test! I'd suggest an SMS Package with different cache locations passed via command line (in seperate programs) for maximum flexibility. ---- Begin VBScript ---- On Error Resume Next Dim oUIResourceMgr Dim oCache Set oUIResourceMgr = CreateObject("UIResource.UIResourceMgr") Set oCacheInfo = oUIResourceMgr.GetCacheInfo ' Set the new location, default is "C:\WINDOWS\system32\CCM\Cache" oCacheInfo.Location = "C:\WINDOWS\system32\CCM\Cache" 'Return the error so SMS can report it WScript.Quit(Err) ---- End VBScript ---- About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS...

SMS SQL for Duplicate Collection Names

Recently, I've found many collections with duplicate names. The dupes can cause problems when managing those collections. I quickly created the following SQL to find the offending collections. -- This SQL query will show collections with duplicate names. Select parentCollectionID, ParentCollection.Name, v_Collection.CollectionID, v_Collection.Name from v_Collection left outer join v_CollectToSubCollect on v_Collection.collectionid=v_CollectToSubCollect.subcollectionid left outer join v_Collection ParentCollection on v_CollectToSubCollect.parentCollectionID = ParentCollection.collectionid where v_Collection.Name in (Select Name from v_Collection Group By Name Having Count(*)>1) About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." ...

SMS 2003 Error 10035, What to Do

Error 10035, or Waiting for Content, seems to be one of the most frequent errors people encounter. Clients often generate this error even when they succeeed. When things go bad, it's important to understand how to troubleshoot error 10035, and know how to fix it. How to troubleshoot 10035 Waiting for Content Errors List of Status Message IDs About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from qualifying purchases at n...

SMS SQL for Program Failed Run Time Exceeded 10070

To create a query or collection of SMS clients which return a status of 10070, or program failed due to the runtime being exceeded, use the following WQL (replace advertID with your advertisement ID): select stat.*, ins.*, att1.*, att1.AttributeTime from SMS_StatusMessageasstat left joinSMS_StatMsgInsStrings as ins on stat.RecordID = ins.RecordID left joinSMS_StatMsgAttributes as att1on stat.RecordID = att1.RecordID inner join SMS_StatMsgAttributes asatt2 onstat.RecordID = att2.RecordID where stat.ModuleName = "SMS Client" and stat.MessageID =10070 and att2.AttributeID = 401 and att2.AttributeValue = "advertID" About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move f...

SMS "Program failed (run time exceeded)" 10070

When a program fails due to error 10070, it does so because the Run Time was Exceeded. SMS Allows a program to run for 12 hours, afterwhich it will issue the failed status message if the program hasn't completed successfully. Note: The Maximum allowed run time within program properties is generally a guide for users running the program themselves, and is not enforced. About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from...

Rename an SMS Site

Not long ago, I had to rename an SMS Site, here are the steps I used, from Jase T. Wolfe's blog . If an SMS Primary Site server, stop the SMS_SITE_COMPONENT_MANAGER, SMS_EXECUTIVE, SMS_SERVER_LOCATOR_POINT, and SMS_SQL_MONITOR services. If an SMS Secondary Site server, stop the SMS_SITE_COMPONENT_MANAGER and SMS_EXECUTIVE services. Open the "\SMS\inboxes\sitectrl.box\sitectrl.ct0" site control file. Search for the section "BEGIN_SITE_DEFINITION". Within this section, locate the third value, which is the site name. Change this value to the new site name, leaving the brackets intact. Do not change any other values. Save the "\SMS\inboxes\sitectrl.box\sitectrl.ct0" site control file. Open RegEdit and find HKLM\Software\Microsoft \SMS\Identification. Change the Site Name value to the new site name. Done! About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specia...

Scriptomatic Becomes Self Aware

Well, not quite, but the scripting guys would prob add that feature if they could. The script-o-matic is a priceless tool that helps create a variety of scripts. Including making WMI easy for the WMI Challenged. Download Scriptomatic from Microsoft . About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from qualifying purchases at no cost to you.

SQL 2000 Support End is Near

Have you upgraded your SMS SQL 2000 installations yet? With the end of SQL 2000 support just around the corner, now is a good time to move if you havn't already. Check out Brian Tucker's blogcast on upgrading . About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from qualifying purchases at no cost to you.

SMS System Health: SQL Performance Counters

When examining your SMS Systems health, a few good counters to look at include the following: Memory Physical Disk Processor Access Methods Buffer Manager Cache Manager Databases General Stats Latches Locks Memory Manager SQL Stats SQL Settable Also take a look at the SMS operations Guide, which talks about the cache hit ratio . About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from qualifying purchases at no ...

SQL Reporting Services and SCCM R2

I can't wait to try out reporting services in SCCM R2, for those of you with very large SMS and SCCM installations, this will hopefully bring a bit of relief from the old ASP SMS Web Reporting. One particular feature I'm eager to try out, is the conversion tool which will convert SMS Web Reports into Reporting Services Reports. Get the SCCM R2 Beta from Microsoft Connect About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I e...

Configuration Manager 2007 Videos

Check out the SCCM 2007 videos on the Blogcast Repository. About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from qualifying purchases at no cost to you.

SMS Client Health Monitor Tool: Inactive

Brian Tucker demonstrates how to find inactive clients in SMS 2003 using the Client Health Monitoring Tool. About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Associate, I earn from qualifying purchases at no cost to you.

SMS WQL for All Clients where Last Status is Waiting for User Condition

select sys.ResourceID,sys.ResourceType,sys.Name,sys.SMSUniqueIdentifier,sys.ResourceDomainORWorkgroup,sys.Client from SMS_R_System as sys join SMS_ClientAdvertisementStatus as stat on sys.ResourceID=stat.ResourceIDwhere stat.AdvertisementID='advertisementID' and stat.LastStatusMessageID=10036 --10036 is Waiting for User Condition, replace advertisementID with your advertisement ID. About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. As an Amazon Ass...

SMS "Waiting for User Condition" 10036

Status Message ID 10036, or "Waiting for User Condition" can occasionally grind advertisements to a halt. Make sure the environment and user condition settings for a particular program have been configured appropriately and are not excluding a large portion of your intended audience. Related Articles SMS WQL for All Clients where Last Status is Waiting for User Condition SMS Status Message ID's About the Author Emmanuel Tsouris is a Systems Management veteran and Developer Advocate specializing in PowerShell and Cloud Automation. He maintains DotVBS to preserve legacy knowledge for the "archaeologist admin." Ready to move from VBScript to the Cloud? Check out his book, Pro PowerShell for Amazon Web Services . Visit EmmanuelTsouris.com for his latest projects. ...