Exemplo n.º 1
0
        internal static PSModuleInfo RehydratePSModuleInfo(PSObject deserializedModuleInfo)
        {
            var 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);
        }