Skip to content

Instantly share code, notes, and snippets.

@ju2wheels
Last active August 29, 2015 14:05
Show Gist options
  • Save ju2wheels/074eaf81e40ed8ffe106 to your computer and use it in GitHub Desktop.
Save ju2wheels/074eaf81e40ed8ffe106 to your computer and use it in GitHub Desktop.
$FormatEnumerationLimit = 10000;
$os = Get-WmiObject Win32_OperatingSystem;
$dotNetInstalled = @{};
$dotNetVersions = @();
$hotFixInstalled = @();
$installedProducts = @{};
$dotNetInstalledString = "[";
$dotNetVersionsString = "[";
$hotFixInstalledString = "[";
$installedProductsString = "[";
Get-WmiObject -Class Win32_Product | Where-Object -FilterScript {$_.Name -notlike "*NET Framework*"} | Select Name, Version | %{ $installedProducts.Add($_.Name, $_.Version) };
Get-WmiObject -Class Win32_Product | Where-Object -FilterScript {$_.Name -like "*NET Framework*"} | Select Name, Version | %{ $dotNetInstalled.Add($_.Name, $_.Version) };
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse -ErrorAction SilentlyContinue | Get-ItemProperty -name Version -EA 0 | Where { $_.PSChildName -match '^(?!S)\p{L}'} | Select PSChildName, Version | % {$dotNetVersions += @{"Name"=$_.PSChildName; "Version"=$_.Version}};
Get-HotFix | Where-Object -FilterScript {$_.Description -ne ""} | Select Description, HotFixId | %{ $hotFixInstalled += @{"HotFixId"=$_.HotFixId; "Description"=$_.Description} };
$dotNetInstalled.Keys | % { $dotNetInstalledString += "`n $($_) => $($dotNetInstalled.Item($_))," };
$dotNetVersions | foreach { $dotNetVersionsString += "`n $($_["Name"]) => $($_["Version"])," };
$hotFixInstalled | foreach { $hotFixInstalledString += "`n $($_["HotFixId"]) => $($_["Description"])," };
$installedProducts.Keys | % { $installedProductsString += "`n $($_) => $($installedProducts.Item($_))," };
if($dotNetInstalledString -ne "["){ $dotNetInstalledString = ($dotNetInstalledString -replace ".$"); };
if($dotNetVersionsString -ne "["){ $dotNetVersionsString = ($dotNetVersionsString -replace ".$"); };
if($hotFixInstalledString -ne "["){ $hotFixInstalledString = ($hotFixInstalledString -replace ".$"); };
if($installedProductsString -ne "["){ $installedProductsString = ($installedProductsString -replace ".$"); };
$dotNetInstalledString += "`n]";
$dotNetVersionsString += "`n]";
$hotFixInstalledString += "`n]";
$installedProductsString += "`n]";
$sys_info = @{};
$sys_info.Add("OS_Caption", $os.Caption);
$sys_info.Add("OS_Version", $os.Version);
$sys_info.Add("OS_BuldNumber", $os.BuildNumber);
$sys_info.Add("OS_OSArchitecture", $os.OSArchitecture);
$sys_info.Add("OS_OtherTypeDescription", $os.OtherTypeDescription);
$sys_info.Add("OS_ServicePackMajorVersion", $os.ServicePackMajorVersion);
$sys_info.Add("OS_ServicePackMinorVersion", $os.ServicePackMinorVersion);
$sys_info.Add("Winrm_ServiceStatus", (Get-Service Winrm -ErrorAction SilentlyContinue).Status);
$sys_info.Add("Winrm_Version", ((winrm id | Out-String -stream | Select-String "ProductVersion") -split "Stack: ")[1]);
$sys_info.Add("Winrm_DllVersion", ([System.Diagnostics.FileVersionInfo]::GetVersionInfo("$($env:Windir)\System32\wsmsvc.dll")).ProductVersion);
$sys_info.Add("PowerShell_Version", (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN").StackVersion);
$sys_info.Add("WinMgmtFrmwkCoreKb_Installed", [boolean](Get-HotFix -Id "KB968930" -ErrorAction SilentlyContinue));
$sys_info.Add("DotNet_Versions", $dotNetVersions);
$sys_info.Add("DotNet_Installed", $dotNetInstalled);
$sys_info.Add("HotFix_Installed", $hotFixInstalled);
$sys_info.Add("Installed_Products", $installedProducts);
$sys_info.Set_Item("DotNet_Installed", $dotNetInstalledString);
$sys_info.Set_Item("DotNet_Versions", $dotNetVersionsString);
$sys_info.Set_Item("HotFix_Installed", $hotFixInstalledString);
$sys_info.Set_Item("Installed_Products", $installedProductsString);
$sys_info.GetEnumerator() | Sort-Object Name | ft -AutoSize -Wrap | Out-String;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment