Beispiel #1
0
        internal static PSModuleInfo RehydratePSModuleInfo(PSObject deserializedModuleInfo)
        {
            DeserializingTypeConverter.RehydrationFlags flags = DeserializingTypeConverter.RehydrationFlags.MissingPropertyOk | DeserializingTypeConverter.RehydrationFlags.NullValueOk;
            string       name = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Name", flags);
            string       path = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Path", flags);
            PSModuleInfo info = new PSModuleInfo(name, path, null, null);

            info.SetGuid(DeserializingTypeConverter.GetPropertyValue <Guid>(deserializedModuleInfo, "Guid", flags));
            info.SetModuleType(DeserializingTypeConverter.GetPropertyValue <ModuleType>(deserializedModuleInfo, "ModuleType", flags));
            info.SetVersion(DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "Version", flags));
            info.AccessMode              = DeserializingTypeConverter.GetPropertyValue <ModuleAccessMode>(deserializedModuleInfo, "AccessMode", flags);
            info.Author                  = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Author", flags);
            info.ClrVersion              = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "ClrVersion", flags);
            info.CompanyName             = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "CompanyName", flags);
            info.Copyright               = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Copyright", flags);
            info.Description             = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Description", flags);
            info.DotNetFrameworkVersion  = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "DotNetFrameworkVersion", flags);
            info.PowerShellHostName      = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "PowerShellHostName", flags);
            info.PowerShellHostVersion   = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "PowerShellHostVersion", flags);
            info.PowerShellVersion       = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "PowerShellVersion", flags);
            info.ProcessorArchitecture   = DeserializingTypeConverter.GetPropertyValue <ProcessorArchitecture>(deserializedModuleInfo, "ProcessorArchitecture", flags);
            info.DeclaredAliasExports    = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedAliases");
            info.DeclaredCmdletExports   = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedCmdlets");
            info.DeclaredFunctionExports = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedFunctions");
            info.DeclaredVariableExports = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedVariables");
            return(info);
        }
Beispiel #2
0
        private static ListType RehydrateList <ListType, ItemType>(
            PSObject pso,
            string propertyName,
            DeserializingTypeConverter.RehydrationFlags flags)
            where ListType : IList, new()
        {
            ArrayList propertyValue = DeserializingTypeConverter.GetPropertyValue <ArrayList>(pso, propertyName, flags);

            if (propertyValue == null)
            {
                if (DeserializingTypeConverter.RehydrationFlags.NullValueMeansEmptyList != (flags & DeserializingTypeConverter.RehydrationFlags.NullValueMeansEmptyList))
                {
                    return(default(ListType));
                }
                return(new ListType());
            }
            ListType listType = new ListType();

            foreach (object valueToConvert in propertyValue)
            {
                ItemType itemType = (ItemType)LanguagePrimitives.ConvertTo(valueToConvert, typeof(ItemType), (IFormatProvider)CultureInfo.InvariantCulture);
                listType.Add((object)itemType);
            }
            return(listType);
        }
Beispiel #3
0
        internal static PSModuleInfo RehydratePSModuleInfo(PSObject deserializedModuleInfo)
        {
            const DeserializingTypeConverter.RehydrationFlags rehydrationFlags = DeserializingTypeConverter.RehydrationFlags.NullValueOk |
                                                                                 DeserializingTypeConverter.RehydrationFlags.MissingPropertyOk;
            string       name       = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Name", rehydrationFlags);
            string       path       = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Path", rehydrationFlags);
            PSModuleInfo moduleInfo = new PSModuleInfo(name, path, context: null, sessionState: null);

            moduleInfo.SetGuid(DeserializingTypeConverter.GetPropertyValue <Guid>(deserializedModuleInfo, "Guid", rehydrationFlags));
            moduleInfo.SetModuleType(DeserializingTypeConverter.GetPropertyValue <ModuleType>(deserializedModuleInfo, "ModuleType", rehydrationFlags));
            moduleInfo.SetVersion(DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "Version", rehydrationFlags));
            moduleInfo.SetHelpInfoUri(DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "HelpInfoUri", rehydrationFlags));

            moduleInfo.AccessMode             = DeserializingTypeConverter.GetPropertyValue <ModuleAccessMode>(deserializedModuleInfo, "AccessMode", rehydrationFlags);
            moduleInfo.Author                 = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Author", rehydrationFlags);
            moduleInfo.ClrVersion             = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "ClrVersion", rehydrationFlags);
            moduleInfo.CompanyName            = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "CompanyName", rehydrationFlags);
            moduleInfo.Copyright              = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Copyright", rehydrationFlags);
            moduleInfo.Description            = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "Description", rehydrationFlags);
            moduleInfo.DotNetFrameworkVersion = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "DotNetFrameworkVersion", rehydrationFlags);
            moduleInfo.PowerShellHostName     = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "PowerShellHostName", rehydrationFlags);
            moduleInfo.PowerShellHostVersion  = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "PowerShellHostVersion", rehydrationFlags);
            moduleInfo.PowerShellVersion      = DeserializingTypeConverter.GetPropertyValue <Version>(deserializedModuleInfo, "PowerShellVersion", rehydrationFlags);
            moduleInfo.ProcessorArchitecture  = DeserializingTypeConverter.GetPropertyValue <Reflection.ProcessorArchitecture>(deserializedModuleInfo, "ProcessorArchitecture", rehydrationFlags);

            moduleInfo.DeclaredAliasExports    = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedAliases");
            moduleInfo.DeclaredCmdletExports   = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedCmdlets");
            moduleInfo.DeclaredFunctionExports = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedFunctions");
            moduleInfo.DeclaredVariableExports = RehydrateHashtableKeys(deserializedModuleInfo, "ExportedVariables");

            var compatiblePSEditions = DeserializingTypeConverter.GetPropertyValue <string[]>(deserializedModuleInfo, "CompatiblePSEditions", rehydrationFlags);

            if (compatiblePSEditions != null && compatiblePSEditions.Length > 0)
            {
                foreach (var edition in compatiblePSEditions)
                {
                    moduleInfo.AddToCompatiblePSEditions(edition);
                }
            }

            // PowerShellGet related properties
            var tags = DeserializingTypeConverter.GetPropertyValue <string[]>(deserializedModuleInfo, "Tags", rehydrationFlags);

            if (tags != null && tags.Length > 0)
            {
                foreach (var tag in tags)
                {
                    moduleInfo.AddToTags(tag);
                }
            }

            moduleInfo.ReleaseNotes             = DeserializingTypeConverter.GetPropertyValue <string>(deserializedModuleInfo, "ReleaseNotes", rehydrationFlags);
            moduleInfo.ProjectUri               = DeserializingTypeConverter.GetPropertyValue <Uri>(deserializedModuleInfo, "ProjectUri", rehydrationFlags);
            moduleInfo.LicenseUri               = DeserializingTypeConverter.GetPropertyValue <Uri>(deserializedModuleInfo, "LicenseUri", rehydrationFlags);
            moduleInfo.IconUri                  = DeserializingTypeConverter.GetPropertyValue <Uri>(deserializedModuleInfo, "IconUri", rehydrationFlags);
            moduleInfo.RepositorySourceLocation = DeserializingTypeConverter.GetPropertyValue <Uri>(deserializedModuleInfo, "RepositorySourceLocation", rehydrationFlags);

            return(moduleInfo);
        }
Beispiel #4
0
        private static Collection <string> RehydrateHashtableKeys(PSObject pso, string propertyName)
        {
            DeserializingTypeConverter.RehydrationFlags flags = DeserializingTypeConverter.RehydrationFlags.MissingPropertyOk | DeserializingTypeConverter.RehydrationFlags.NullValueOk;
            Hashtable hashtable = DeserializingTypeConverter.GetPropertyValue <Hashtable>(pso, propertyName, flags);

            if (hashtable == null)
            {
                return(new Collection <string>());
            }
            return(new Collection <string>((from k in hashtable.Keys.Cast <object>()
                                            where k != null
                                            select k.ToString() into s
                                            where s != null
                                            select s).ToList <string>()));
        }
Beispiel #5
0
        private static T GetPropertyValue <T>(
            PSObject pso,
            string propertyName,
            DeserializingTypeConverter.RehydrationFlags flags)
        {
            PSPropertyInfo property = pso.Properties[propertyName];

            if (property == null && DeserializingTypeConverter.RehydrationFlags.MissingPropertyOk == (flags & DeserializingTypeConverter.RehydrationFlags.MissingPropertyOk))
            {
                return(default(T));
            }
            object valueToConvert = property.Value;

            return(valueToConvert == null && DeserializingTypeConverter.RehydrationFlags.NullValueOk == (flags & DeserializingTypeConverter.RehydrationFlags.NullValueOk) ? default(T) : (T)LanguagePrimitives.ConvertTo(valueToConvert, typeof(T), (IFormatProvider)CultureInfo.InvariantCulture));
        }
Beispiel #6
0
        private static Collection <string> RehydrateHashtableKeys(PSObject pso, string propertyName)
        {
            const DeserializingTypeConverter.RehydrationFlags rehydrationFlags = DeserializingTypeConverter.RehydrationFlags.NullValueOk |
                                                                                 DeserializingTypeConverter.RehydrationFlags.MissingPropertyOk;
            Hashtable hashtable = DeserializingTypeConverter.GetPropertyValue <Hashtable>(pso, propertyName, rehydrationFlags);

            if (hashtable == null)
            {
                return(new Collection <string>());
            }
            else
            {
                List <string> list = hashtable
                                     .Keys
                                     .Cast <object>()
                                     .Where(static k => k != null)