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]
,cte.PowerShellVersions0 [PowerShell Versions]
from v_R_System sys1
left join CTE on cte.ResourceID=sys1.ResourceID
- Created on .