-
Notifications
You must be signed in to change notification settings - Fork 15
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.
As can be noted from reviewing the data, SoftLayer Windows images are not stock Windows builds and have had some modifications done to them. Other than the standard expected security updates the SoftLayer Windows images have had Windows Management Framework Core upgraded to normalize WinRm/Powershell versions across all Windows versions to a minimum of Powershell/WinRm 2.0 and there are also numerous .NET Framework versions installed.
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: