From 2b70837d983bf7625cb2ece038f679c15e5c87fb Mon Sep 17 00:00:00 2001 From: "Jason Shirk (POWERSHELL)" Date: Tue, 2 Aug 2016 09:36:58 -0700 Subject: [PATCH] Set remoting PSVersionTable private data in a downlevel compatible manner --- src/System.Management.Automation/engine/PSVersionInfo.cs | 8 ++++++++ src/System.Management.Automation/engine/serialization.cs | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/System.Management.Automation/engine/PSVersionInfo.cs b/src/System.Management.Automation/engine/PSVersionInfo.cs index 510e0dec1..5ac92c94e 100644 --- a/src/System.Management.Automation/engine/PSVersionInfo.cs +++ b/src/System.Management.Automation/engine/PSVersionInfo.cs @@ -81,6 +81,14 @@ namespace System.Management.Automation return s_psVersionTable; } + internal static Hashtable GetPSVersionTableForDownLevel() + { + var result = (Hashtable)s_psVersionTable.Clone(); + // Downlevel systems don't support SemanticVersion, but Version is most likely good enough anyway. + result[PSVersionInfo.PSVersionName] = (Version)(SemanticVersion)s_psVersionTable[PSVersionInfo.PSVersionName]; + return result; + } + internal static Version GetBuildVersion() { string assemblyPath = typeof(PSVersionInfo).GetTypeInfo().Assembly.Location; diff --git a/src/System.Management.Automation/engine/serialization.cs b/src/System.Management.Automation/engine/serialization.cs index d3fbfdf37..d4c0df879 100644 --- a/src/System.Management.Automation/engine/serialization.cs +++ b/src/System.Management.Automation/engine/serialization.cs @@ -6438,7 +6438,10 @@ namespace System.Management.Automation { result = new PSPrimitiveDictionary(); } - PSPrimitiveDictionary versionTable = new PSPrimitiveDictionary(PSVersionInfo.GetPSVersionTable()); + PSPrimitiveDictionary versionTable = new PSPrimitiveDictionary(PSVersionInfo.GetPSVersionTableForDownLevel()) + { + {"PSSemanticVersion", PSVersionInfo.PSVersion.ToString()} + }; result.Add(PSVersionInfo.PSVersionTableName, versionTable); return result;