ConfigMgr Inventory of Powershell Versions

If you happen to be curious about what versions of Powershell are installed/available on your clients, here’s one way to pull out the information.  Note that the regkey locations for some of this information has changed from version 2 to higher versions, so it’s completely possible that a future update to Powershell and the regkey location will change again; so if that happens a modification to these .mof files will be necessary.  As of Windows 8.1; these worked to report versions of Powershell installed.

Take the –> attached <– and inside are two .mof files.  If you are ConfigMgr 2012, place the contents of the ‘posh-configuration.mof.txt’ at the bottom of your <inbox location>\clifiles.src \hinv\configuration.mof file.  In your configMgr 2012 console, in Client Settings, Default Agent Settings, Hardware Inventory, Classes… Import the ‘posh-to-be-imported.mof’

Wait for clients to start reporting, once you get some clients reporting, the below sql query should get you started:

;with CTE as (
select distinct resourceid
,RTRIM(substring(ISNULL((select ‘,’+PSCompatibleVersion0
from v_GS_PowerShell0 p1
where p1.ResourceID=t2.resourceid for XML path (”)),’ ‘),2,2000)) as PSCompatibleVersions0
,RTRIM(substring(ISNULL((select ‘,’+PowerShellVersion0
from v_GS_PowerShell0 p1  where p1.ResourceID=t2.resourceid for XML path (”)),’ ‘),2,2000)) as PowerShellVersions0
,RTRIM(substring(ISNULL((select ‘,’+RuntimeVersion0
from v_GS_PowerShell0 p1  where p1.ResourceID=t2.resourceid for XML path (”)),’ ‘),2,2000)) as RunTimeVersions0
from v_R_System t2
select distinct sys1.netbios_name0 [ComputerName]
,cte.RunTimeVersions0 [RunTime Versions]
,cte.PSCompatibleVersions0 [PS Compatible Versions]

from v_R_System sys1
left join CTE on cte.ResourceID=sys1.ResourceID




Written by , Posted .