Skip to content

SoftLayer Windows OS Template System Details

Julio Lajara edited this page Aug 19, 2014 · 4 revisions

The following is the SoftLayer Windows OS template version details for use in automation scripting.

The details were gathered on each OS using the following Powershell script:

$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;

Due to size the detail pages are broken out by OS release:

Clone this wiki locally