Exemple #1
0
 public PSMemberSet(string name, IEnumerable<PSMemberInfo> members)
 {
     this.inheritMembers = true;
     if (string.IsNullOrEmpty(name))
     {
         throw PSTraceSource.NewArgumentException("name");
     }
     base.name = name;
     if (members == null)
     {
         throw PSTraceSource.NewArgumentNullException("members");
     }
     this.internalMembers = new PSMemberInfoInternalCollection<PSMemberInfo>();
     foreach (PSMemberInfo info in members)
     {
         if (info == null)
         {
             throw PSTraceSource.NewArgumentNullException("members");
         }
         this.internalMembers.Add(info.Copy());
     }
     this.members = new PSMemberInfoIntegratingCollection<PSMemberInfo>(this, emptyMemberCollection);
     this.properties = new PSMemberInfoIntegratingCollection<PSPropertyInfo>(this, emptyPropertyCollection);
     this.methods = new PSMemberInfoIntegratingCollection<PSMethodInfo>(this, emptyMethodCollection);
 }
Exemple #2
0
 public PSMemberSet(string name)
 {
     this.inheritMembers = true;
     if (string.IsNullOrEmpty(name))
     {
         throw PSTraceSource.NewArgumentException("name");
     }
     base.name = name;
     this.internalMembers = new PSMemberInfoInternalCollection<PSMemberInfo>();
     this.members = new PSMemberInfoIntegratingCollection<PSMemberInfo>(this, emptyMemberCollection);
     this.properties = new PSMemberInfoIntegratingCollection<PSPropertyInfo>(this, emptyPropertyCollection);
     this.methods = new PSMemberInfoIntegratingCollection<PSMethodInfo>(this, emptyMethodCollection);
 }
 protected override void AddAllProperties <T>(
     ManagementBaseObject wmiObject,
     PSMemberInfoInternalCollection <T> members)
 {
     if (wmiObject.SystemProperties == null)
     {
         return;
     }
     foreach (PropertyData systemProperty in wmiObject.SystemProperties)
     {
         members.Add(new PSProperty(systemProperty.Name, (Adapter)this, (object)wmiObject, (object)systemProperty) as T);
     }
 }
Exemple #4
0
        private ReadOnlyPSMemberInfoCollection <PSMemberInfo> GetMatchMembers()
        {
            if (WildcardPattern.ContainsWildcardCharacters(this._property))
            {
                return(this._inputObject.Members.Match(this._property, PSMemberTypes.All));
            }
            PSMemberInfoInternalCollection <PSMemberInfo> members = new PSMemberInfoInternalCollection <PSMemberInfo>();
            PSMemberInfo member = this._inputObject.Members[this._property];

            if (member != null)
            {
                members.Add(member);
            }
            return(new ReadOnlyPSMemberInfoCollection <PSMemberInfo>(members));
        }
 protected override void AddAllMethods <T>(
     ManagementBaseObject wmiObject,
     PSMemberInfoInternalCollection <T> members)
 {
     if (!typeof(T).IsAssignableFrom(typeof(PSMethod)))
     {
         return;
     }
     foreach (BaseWMIAdapter.WMIMethodCacheEntry member in BaseWMIAdapter.GetInstanceMethodTable(wmiObject, true).memberCollection)
     {
         if ((object)members[member.Name] == null)
         {
             Adapter.tracer.WriteLine("Adding method {0}", (object)member.Name);
             members.Add(new PSMethod(member.Name, (Adapter)this, (object)wmiObject, (object)member) as T);
         }
     }
 }
Exemple #6
0
 internal PSMemberSet(string name, PSObject mshObject)
 {
     this.inheritMembers = true;
     if (string.IsNullOrEmpty(name))
     {
         throw PSTraceSource.NewArgumentException("name");
     }
     base.name = name;
     if (mshObject == null)
     {
         throw PSTraceSource.NewArgumentNullException("mshObject");
     }
     this.constructorPSObject = mshObject;
     this.internalMembers = mshObject.InstanceMembers;
     this.members = new PSMemberInfoIntegratingCollection<PSMemberInfo>(this, typeMemberCollection);
     this.properties = new PSMemberInfoIntegratingCollection<PSPropertyInfo>(this, typePropertyCollection);
     this.methods = new PSMemberInfoIntegratingCollection<PSMethodInfo>(this, typeMethodCollection);
 }
Exemple #7
0
 private PSMemberInfoInternalCollection<PSMemberInfo> GetInternalMembersFromAdapted()
 {
     PSMemberInfoInternalCollection<PSMemberInfo> internals = new PSMemberInfoInternalCollection<PSMemberInfo>();
     if (this.psObject.isDeserialized)
     {
         if (this.psObject.adaptedMembers != null)
         {
             foreach (PSMemberInfo info in this.psObject.adaptedMembers)
             {
                 internals.Add(info.Copy());
             }
         }
         return internals;
     }
     foreach (PSMemberInfo info2 in this.psObject.InternalAdapter.BaseGetMembers<PSMemberInfo>(this.psObject.ImmediateBaseObject))
     {
         internals.Add(info2.Copy());
     }
     return internals;
 }
        protected override PSMemberInfoInternalCollection <T> GetMembers <T>(
            object obj)
        {
            PSMemberInfoInternalCollection <T> members1 = new PSMemberInfoInternalCollection <T>();

            if (typeof(T).IsAssignableFrom(typeof(PSProperty)))
            {
                this.DoAddAllProperties <T>(obj, members1);
            }
            PSObject.dotNetInstanceAdapter.AddAllMethods <T>(obj, members1, true);
            if (DotNetAdapter.IsTypeParameterizedProperty(typeof(T)))
            {
                PSMemberInfoInternalCollection <PSParameterizedProperty> members2 = new PSMemberInfoInternalCollection <PSParameterizedProperty>();
                PSObject.dotNetInstanceAdapter.AddAllProperties <PSParameterizedProperty>(obj, members2, true);
                foreach (PSParameterizedProperty parameterizedProperty in (PSMemberInfoCollection <PSParameterizedProperty>)members2)
                {
                    members1.Add(parameterizedProperty as T);
                }
            }
            return(members1);
        }
Exemple #9
0
        internal static PSMemberInfoInternalCollection <T> Match <T>(
            PSMemberInfoInternalCollection <T> memberList,
            string name,
            WildcardPattern nameMatch,
            PSMemberTypes memberTypes)
            where T : PSMemberInfo
        {
            PSMemberInfoInternalCollection <T> internalCollection = new PSMemberInfoInternalCollection <T>();

            if (memberList == null)
            {
                throw MemberMatch.tracer.NewArgumentNullException(nameof(memberList));
            }
            if (string.IsNullOrEmpty(name))
            {
                throw MemberMatch.tracer.NewArgumentException(nameof(name));
            }
            if (nameMatch == null)
            {
                object hashedMember = memberList.hashedMembers[(object)name];
                if (hashedMember != null)
                {
                    PSMemberInfo member = (PSMemberInfo)memberList.members[((int?)hashedMember).Value];
                    if ((member.MemberType & memberTypes) != (PSMemberTypes)0)
                    {
                        internalCollection.Add(member as T);
                    }
                }
                return(internalCollection);
            }
            foreach (T member in (PSMemberInfoCollection <T>)memberList)
            {
                PSMemberInfo psMemberInfo = (PSMemberInfo)member;
                if (nameMatch.IsMatch(psMemberInfo.Name) && (psMemberInfo.MemberType & memberTypes) != (PSMemberTypes)0)
                {
                    internalCollection.Add(psMemberInfo as T);
                }
            }
            return(internalCollection);
        }
        private PSMemberInfoInternalCollection <PSMemberInfo> GetInternalMembersFromAdapted()
        {
            PSMemberInfoInternalCollection <PSMemberInfo> internalCollection = new PSMemberInfoInternalCollection <PSMemberInfo>();

            if (this.psObject.isDeserialized)
            {
                if (this.psObject.adaptedMembers != null)
                {
                    foreach (PSMemberInfo adaptedMember in (PSMemberInfoCollection <PSPropertyInfo>) this.psObject.adaptedMembers)
                    {
                        internalCollection.Add(adaptedMember.Copy());
                    }
                }
            }
            else
            {
                foreach (PSMemberInfo member in (PSMemberInfoCollection <PSMemberInfo>) this.psObject.InternalAdapter.BaseGetMembers <PSMemberInfo>(this.psObject.ImmediateBaseObject))
                {
                    internalCollection.Add(member.Copy());
                }
            }
            return(internalCollection);
        }
Exemple #11
0
        private static PSMemberSet MaskDeserializedAndGetStandardMembers(PSObject so)
        {
            Diagnostics.Assert(so != null, "Shell object to process cannot be null");
            var typeNames = so.InternalTypeNames;
            Collection <string> typeNamesWithoutDeserializedPrefix = Deserializer.MaskDeserializationPrefix(typeNames);

            if (typeNamesWithoutDeserializedPrefix == null)
            {
                return(null);
            }

            TypeTable typeTable = so.GetTypeTable();

            if (typeTable == null)
            {
                return(null);
            }

            PSMemberInfoInternalCollection <PSMemberInfo> members =
                typeTable.GetMembers <PSMemberInfo>(new ConsolidatedString(typeNamesWithoutDeserializedPrefix));

            return(members[TypeTable.PSStandardMembers] as PSMemberSet);
        }
        private void Process_GetEvent_Types_Ps1Xml(string filePath, ConcurrentBag <string> errors)
        {
            typesInfo.Add(new SessionStateTypeEntry(filePath));

            string typeName = null;
            PSMemberInfoInternalCollection <PSMemberInfo> typeMembers      = null;
            PSMemberInfoInternalCollection <PSMemberInfo> memberSetMembers = null;
            HashSet <string> newMembers = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            #region System.Diagnostics.Eventing.Reader.EventLogConfiguration

            typeName    = @"System.Diagnostics.Eventing.Reader.EventLogConfiguration";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSPropertySet(
                    @"DefaultDisplayPropertySet",
                    new List <string> {
                "LogName", "MaximumSizeInBytes", "RecordCount", "LogMode"
            }),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Diagnostics.Eventing.Reader.EventLogConfiguration

            #region System.Diagnostics.Eventing.Reader.EventLogRecord

            typeName    = @"System.Diagnostics.Eventing.Reader.EventLogRecord";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSPropertySet(
                    @"DefaultDisplayPropertySet",
                    new List <string> {
                "TimeCreated", "ProviderName", "Id", "Message"
            }),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Diagnostics.Eventing.Reader.EventLogRecord

            #region System.Diagnostics.Eventing.Reader.ProviderMetadata

            typeName    = @"System.Diagnostics.Eventing.Reader.ProviderMetadata";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 2));

            // Process regular members.
            newMembers.Add(@"ProviderName");
            AddMember(
                errors,
                typeName,
                new PSAliasProperty(@"ProviderName", @"Name", conversionType: null),
                typeMembers,
                isOverride: false);

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSPropertySet(
                    @"DefaultDisplayPropertySet",
                    new List <string> {
                "Name", "LogLinks"
            }),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Diagnostics.Eventing.Reader.ProviderMetadata

#if !CORECLR
            #region Microsoft.PowerShell.Commands.GetCounter.CounterSet

            typeName    = @"Microsoft.PowerShell.Commands.GetCounter.CounterSet";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process regular members.
            newMembers.Add(@"Counter");
            AddMember(
                errors,
                typeName,
                new PSAliasProperty(@"Counter", @"Paths", conversionType: null),
                typeMembers,
                isOverride: false);

            #endregion Microsoft.PowerShell.Commands.GetCounter.CounterSet

            #region Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample

            typeName    = @"Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSPropertySet(
                    @"DefaultDisplayPropertySet",
                    new List <string> {
                "Path", "InstanceName", "CookedValue"
            }),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample

            #region Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet

            typeName    = @"Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 2));

            // Process regular members.
            newMembers.Add(@"Readings");
            AddMember(
                errors,
                typeName,
                new PSScriptProperty(
                    @"Readings",
                    GetScriptBlock(@"$strPaths = """"
          foreach ($ctr in $this.CounterSamples)
          {
              $strPaths += ($ctr.Path + "" :"" + ""`n"")
              $strPaths += ($ctr.CookedValue.ToString() + ""`n`n"")
          }

          return $strPaths"),
                    setterScript: null,
                    shouldCloneOnAccess: true),
                typeMembers,
                isOverride: false);

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSPropertySet(
                    @"DefaultDisplayPropertySet",
                    new List <string> {
                "Timestamp", "Readings"
            }),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet
#endif

            // Update binder version for newly added members.
            foreach (string memberName in newMembers)
            {
                PSGetMemberBinder.TypeTableMemberAdded(memberName);
            }
        }
Exemple #13
0
        /// <summary>
        /// Get the matched PSMembers
        /// </summary>
        /// <returns></returns>
        private ReadOnlyPSMemberInfoCollection<PSMemberInfo> GetMatchMembers()
        {
            if (!WildcardPattern.ContainsWildcardCharacters(_property))
            {
                PSMemberInfoInternalCollection<PSMemberInfo> restuls = new PSMemberInfoInternalCollection<PSMemberInfo>();
                PSMemberInfo member = _inputObject.Members[_property];
                if (member != null)
                {
                    restuls.Add(member);
                }
                return new ReadOnlyPSMemberInfoCollection<PSMemberInfo>(restuls);
            }

            ReadOnlyPSMemberInfoCollection<PSMemberInfo> members = _inputObject.Members.Match(_property, PSMemberTypes.All);
            Dbg.Assert(members != null, "The return value of Members.Match should never be null.");
            return members;
        }
Exemple #14
0
        /// <summary>
        /// Serializes properties from collection
        /// </summary>
        /// <param name="propertyCollection">
        /// Collection of properties to serialize
        /// </param>
        /// <param name="name">
        /// Name for enclosing element tag
        /// </param>
        /// <param name="depth">
        /// depth to which each property should be 
        /// serialized
        /// </param>
        private void SerializeProperties(
            PSMemberInfoInternalCollection<PSPropertyInfo> propertyCollection, string name, int depth)
        {
            Dbg.Assert(propertyCollection != null, "caller should validate the parameter");
            if (propertyCollection.Count == 0)
                return;

            foreach (PSMemberInfo info in propertyCollection)
            {
                PSPropertyInfo prop = info as PSPropertyInfo;

                Dbg.Assert(prop != null, "propertyCollection should only have member of type PSProperty");

                object value = AutomationNull.Value;
                //PSObject throws GetValueException if it cannot 
                //get value for a property.
                try
                {
                    value = prop.Value;
                }
                catch (GetValueException)
                {
                    continue;
                }
                //Write the property
                WriteOneObject(value, prop.Name, depth);
            }
        }
Exemple #15
0
        /// <summary>
        /// Serializes properties of PSObject
        /// </summary>
        private void WritePSObjectProperties(PSObject source, int depth)
        {
            Dbg.Assert(source != null, "caller should validate the information");

            depth = GetDepthOfSerialization(source, depth);

            //Depth available for each property is one less
            --depth;
            Dbg.Assert(depth >= 0, "depth should be greater or equal to zero");
            if (source.GetSerializationMethod(null) == SerializationMethod.SpecificProperties)
            {
                PSMemberInfoInternalCollection<PSPropertyInfo> specificProperties = new PSMemberInfoInternalCollection<PSPropertyInfo>();
                foreach (string propertyName in source.GetSpecificPropertiesToSerialize(null))
                {
                    PSPropertyInfo property = source.Properties[propertyName];
                    if (property != null)
                    {
                        specificProperties.Add(property);
                    }
                }
                SerializeProperties(specificProperties, CustomSerializationStrings.Properties, depth);
                return;
            }

            foreach (PSPropertyInfo prop in source.Properties)
            {
                Dbg.Assert(prop != null, "propertyCollection should only have member of type PSProperty");
                object value = AutomationNull.Value;
                //PSObject throws GetValueException if it cannot 
                //get value for a property.
                try
                {
                    value = prop.Value;
                }
                catch (GetValueException)
                {
                    WritePropertyWithNullValue(_writer, prop, depth);
                    continue;
                }
                //Write the property
                if (value == null)
                {
                    WritePropertyWithNullValue(_writer, prop, depth);
                }
                else
                {
                    WriteOneObject(value, prop.Name, depth);
                }
            }
        }
 private void SerializeProperties(PSMemberInfoInternalCollection<PSPropertyInfo> propertyCollection, string name, int depth)
 {
     if (propertyCollection.Count != 0)
     {
         foreach (PSMemberInfo info in propertyCollection)
         {
             PSPropertyInfo info2 = info as PSPropertyInfo;
             object source = AutomationNull.Value;
             try
             {
                 source = info2.Value;
             }
             catch (GetValueException)
             {
                 continue;
             }
             this.WriteOneObject(source, info2.Name, depth);
         }
     }
 }
 private void WritePSObjectProperties(PSObject source, int depth)
 {
     depth = GetDepthOfSerialization(source, depth);
     depth--;
     if (source.GetSerializationMethod(null) == SerializationMethod.SpecificProperties)
     {
         PSMemberInfoInternalCollection<PSPropertyInfo> propertyCollection = new PSMemberInfoInternalCollection<PSPropertyInfo>();
         foreach (string str in source.GetSpecificPropertiesToSerialize(null))
         {
             PSPropertyInfo member = source.Properties[str];
             if (member != null)
             {
                 propertyCollection.Add(member);
             }
         }
         this.SerializeProperties(propertyCollection, "Property", depth);
     }
     else
     {
         foreach (PSPropertyInfo info2 in source.Properties)
         {
             object obj2 = AutomationNull.Value;
             try
             {
                 obj2 = info2.Value;
             }
             catch (GetValueException)
             {
                 this.WritePropertyWithNullValue(this._writer, info2, depth);
                 continue;
             }
             if (obj2 == null)
             {
                 this.WritePropertyWithNullValue(this._writer, info2, depth);
             }
             else
             {
                 this.WriteOneObject(obj2, info2.Name, depth);
             }
         }
     }
 }
Exemple #18
0
 private ReadOnlyPSMemberInfoCollection<PSMemberInfo> GetMatchMembers()
 {
     if (WildcardPattern.ContainsWildcardCharacters(this._property))
     {
         return this._inputObject.Members.Match(this._property, PSMemberTypes.All);
     }
     PSMemberInfoInternalCollection<PSMemberInfo> members = new PSMemberInfoInternalCollection<PSMemberInfo>();
     PSMemberInfo member = this._inputObject.Members[this._property];
     if (member != null)
     {
         members.Add(member);
     }
     return new ReadOnlyPSMemberInfoCollection<PSMemberInfo>(members);
 }
 protected abstract void DoAddAllProperties <T>(
     object obj,
     PSMemberInfoInternalCollection <T> members)
     where T : PSMemberInfo;
        private void Process_TypesV3_Ps1Xml(string filePath, ConcurrentBag <string> errors)
        {
            typesInfo.Add(new SessionStateTypeEntry(filePath));

            string typeName = null;
            PSMemberInfoInternalCollection <PSMemberInfo> typeMembers      = null;
            PSMemberInfoInternalCollection <PSMemberInfo> memberSetMembers = null;
            HashSet <string> newMembers = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            #region System.Security.Cryptography.X509Certificates.X509Certificate2

            typeName    = @"System.Security.Cryptography.X509Certificates.X509Certificate2";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 3));

            // Process regular members.
            newMembers.Add(@"EnhancedKeyUsageList");
            AddMember(
                errors,
                typeName,
                new PSScriptProperty(
                    @"EnhancedKeyUsageList",
                    GetScriptBlock(@",(new-object Microsoft.Powershell.Commands.EnhancedKeyUsageProperty -argumentlist $this).EnhancedKeyUsageList;"),
                    setterScript: null,
                    shouldCloneOnAccess: true),
                typeMembers,
                isOverride: false);

            newMembers.Add(@"DnsNameList");
            AddMember(
                errors,
                typeName,
                new PSScriptProperty(
                    @"DnsNameList",
                    GetScriptBlock(@",(new-object Microsoft.Powershell.Commands.DnsNameProperty -argumentlist $this).DnsNameList;"),
                    setterScript: null,
                    shouldCloneOnAccess: true),
                typeMembers,
                isOverride: false);

            newMembers.Add(@"SendAsTrustedIssuer");
            AddMember(
                errors,
                typeName,
                new PSScriptProperty(
                    @"SendAsTrustedIssuer",
                    GetScriptBlock(@"[Microsoft.Powershell.Commands.SendAsTrustedIssuerProperty]::ReadSendAsTrustedIssuerProperty($this)"),
                    GetScriptBlock(@"$sendAsTrustedIssuer = $args[0]
                    [Microsoft.Powershell.Commands.SendAsTrustedIssuerProperty]::WriteSendAsTrustedIssuerProperty($this,$this.PsPath,$sendAsTrustedIssuer)"),
                    shouldCloneOnAccess: true),
                typeMembers,
                isOverride: false);

            #endregion System.Security.Cryptography.X509Certificates.X509Certificate2

            #region System.Management.Automation.Remoting.PSSenderInfo

            typeName    = @"System.Management.Automation.Remoting.PSSenderInfo";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 2));

            // Process regular members.
            newMembers.Add(@"ConnectedUser");
            AddMember(
                errors,
                typeName,
                new PSScriptProperty(
                    @"ConnectedUser",
                    GetScriptBlock(@"$this.UserInfo.Identity.Name"),
                    setterScript: null,
                    shouldCloneOnAccess: true),
                typeMembers,
                isOverride: false);

            newMembers.Add(@"RunAsUser");
            AddMember(
                errors,
                typeName,
                new PSScriptProperty(
                    @"RunAsUser",
                    GetScriptBlock(@"if($null -ne $this.UserInfo.WindowsIdentity)
            {
                $this.UserInfo.WindowsIdentity.Name
            }"),
                    setterScript: null,
                    shouldCloneOnAccess: true),
                typeMembers,
                isOverride: false);

            #endregion System.Management.Automation.Remoting.PSSenderInfo

            #region System.Management.Automation.CompletionResult

            typeName    = @"System.Management.Automation.CompletionResult";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationDepth", 1),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Management.Automation.CompletionResult

            #region Deserialized.System.Management.Automation.CompletionResult

            typeName    = @"Deserialized.System.Management.Automation.CompletionResult";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"TargetTypeForDeserialization", typeof(Microsoft.PowerShell.DeserializingTypeConverter)),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Deserialized.System.Management.Automation.CompletionResult

            #region System.Management.Automation.CommandCompletion

            typeName    = @"System.Management.Automation.CommandCompletion";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationDepth", 1),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Management.Automation.CommandCompletion

            #region Deserialized.System.Management.Automation.CommandCompletion

            typeName    = @"Deserialized.System.Management.Automation.CommandCompletion";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"TargetTypeForDeserialization", typeof(Microsoft.PowerShell.DeserializingTypeConverter)),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Deserialized.System.Management.Automation.CommandCompletion

            #region Microsoft.PowerShell.Commands.ModuleSpecification

            typeName    = @"Microsoft.PowerShell.Commands.ModuleSpecification";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationDepth", 1),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Microsoft.PowerShell.Commands.ModuleSpecification

            #region Deserialized.Microsoft.PowerShell.Commands.ModuleSpecification

            typeName    = @"Deserialized.Microsoft.PowerShell.Commands.ModuleSpecification";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"TargetTypeForDeserialization", typeof(Microsoft.PowerShell.DeserializingTypeConverter)),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Deserialized.Microsoft.PowerShell.Commands.ModuleSpecification

            #region System.Management.Automation.JobStateEventArgs

            typeName    = @"System.Management.Automation.JobStateEventArgs";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationDepth", 2),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Management.Automation.JobStateEventArgs

            #region Deserialized.System.Management.Automation.JobStateEventArgs

            typeName    = @"Deserialized.System.Management.Automation.JobStateEventArgs";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"TargetTypeForDeserialization", typeof(Microsoft.PowerShell.DeserializingTypeConverter)),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Deserialized.System.Management.Automation.JobStateEventArgs

            #region System.Exception

            typeName    = @"System.Exception";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationDepth", 1),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Exception

            #region System.Management.Automation.Remoting.PSSessionOption

            typeName    = @"System.Management.Automation.Remoting.PSSessionOption";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationDepth", 1),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Management.Automation.Remoting.PSSessionOption

            #region Deserialized.System.Management.Automation.Remoting.PSSessionOption

            typeName    = @"Deserialized.System.Management.Automation.Remoting.PSSessionOption";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"TargetTypeForDeserialization", typeof(Microsoft.PowerShell.DeserializingTypeConverter)),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Deserialized.System.Management.Automation.Remoting.PSSessionOption

            #region System.Management.Automation.DebuggerStopEventArgs

            typeName    = @"System.Management.Automation.DebuggerStopEventArgs";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 2));

            // Process regular members.
            newMembers.Add(@"SerializedInvocationInfo");
            AddMember(
                errors,
                typeName,
                new PSCodeProperty(
                    @"SerializedInvocationInfo",
                    GetMethodInfo(typeof(Microsoft.PowerShell.DeserializingTypeConverter), @"GetInvocationInfo"),
                    setterCodeReference: null)
            {
                IsHidden = true
            },
                typeMembers,
                isOverride: false);

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 3);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationMethod", @"SpecificProperties"),
                memberSetMembers,
                isOverride: false);

            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"SerializationDepth", 2),
                memberSetMembers,
                isOverride: false);

            AddMember(
                errors,
                typeName,
                new PSPropertySet(
                    @"PropertySerializationSet",
                    new List <string> {
                "Breakpoints", "ResumeAction", "SerializedInvocationInfo"
            }),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion System.Management.Automation.DebuggerStopEventArgs

            #region Deserialized.System.Management.Automation.DebuggerStopEventArgs

            typeName    = @"Deserialized.System.Management.Automation.DebuggerStopEventArgs";
            typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));

            // Process standard members.
            memberSetMembers = new PSMemberInfoInternalCollection <PSMemberInfo>(capacity: 1);
            AddMember(
                errors,
                typeName,
                new PSNoteProperty(@"TargetTypeForDeserialization", typeof(Microsoft.PowerShell.DeserializingTypeConverter)),
                memberSetMembers,
                isOverride: false);

            ProcessStandardMembers(
                errors,
                typeName,
                memberSetMembers,
                typeMembers,
                isOverride: false);

            #endregion Deserialized.System.Management.Automation.DebuggerStopEventArgs

            // Update binder version for newly added members.
            foreach (string memberName in newMembers)
            {
                PSGetMemberBinder.TypeTableMemberAdded(memberName);
            }
        }