コード例 #1
0
        internal void AddToTypesXmlCache(T member, bool preValidated)
        {
            if (member == null)
            {
                throw PSTraceSource.NewArgumentNullException("member");
            }
            if (!preValidated && PSMemberInfoCollection <T> .IsReservedName(member.Name))
            {
                throw new ExtendedTypeSystemException("PSObjectMembersMembersAddReservedName", null, ExtendedTypeSystem.ReservedMemberName, new object[] { member.Name });
            }
            PSMemberInfo info = member.Copy();

            if (this.mshOwner != null)
            {
                if (!preValidated)
                {
                    TypeTable typeTable = this.mshOwner.GetTypeTable();
                    if ((typeTable != null) && (typeTable.GetMembers <T>(this.mshOwner.InternalTypeNames)[member.Name] != null))
                    {
                        throw new ExtendedTypeSystemException("AlreadyPresentInTypesXml", null, ExtendedTypeSystem.MemberAlreadyPresentFromTypesXml, new object[] { member.Name });
                    }
                }
                info.ReplicateInstance(this.mshOwner);
                this.mshOwner.InstanceMembers.Add(info, preValidated);
                PSGetMemberBinder.SetHasInstanceMember(info.Name);
                PSVariableAssignmentBinder.NoteTypeHasInstanceMemberOrTypeName(PSObject.Base(this.mshOwner).GetType());
            }
            else
            {
                this.memberSetOwner.InternalMembers.Add(info, preValidated);
            }
        }
コード例 #2
0
        private PSPropertyExpressionResult GetValue(PSObject target, bool eatExceptions)
        {
            try
            {
                object result = null;

                if (Script != null)
                {
                    result = Script.DoInvokeReturnAsIs(
                        useLocalScope: true,
                        errorHandlingBehavior: ScriptBlock.ErrorHandlingBehavior.WriteToExternalErrorPipe,
                        dollarUnder: target,
                        input: AutomationNull.Value,
                        scriptThis: AutomationNull.Value,
                        args: Array.Empty <object>());
                }
                else
                {
                    if (_getValueDynamicSite is null)
                    {
                        _getValueDynamicSite =
                            CallSite <Func <CallSite, object, object> > .Create(
                                PSGetMemberBinder.Get(
                                    _stringValue,
                                    classScope: (Type)null,
                                    @static: false));
                    }

                    result = _getValueDynamicSite.Target.Invoke(_getValueDynamicSite, target);
                }

                return(new PSPropertyExpressionResult(result, this, null));
            }
            catch (RuntimeException e)
            {
                if (eatExceptions)
                {
                    return(new PSPropertyExpressionResult(null, this, e));
                }
                else
                {
                    throw;
                }
            }
        }
コード例 #3
0
ファイル: EnumerableOps.cs プロジェクト: modulexcite/pash-1
        internal static object PropertyGetter(PSGetMemberBinder binder, IEnumerator enumerator)
        {
            CallSite <Func <CallSite, object, object> > getMemberBinderSite = CallSite <Func <CallSite, object, object> > .Create(binder);

            ArrayList        result = new ArrayList();
            ExecutionContext executionContextFromTLS = LocalPipeline.GetExecutionContextFromTLS();

            PropertyGetterWorker(getMemberBinderSite, enumerator, executionContextFromTLS, result);
            if (result.Count == 1)
            {
                return(result[0]);
            }
            if (result.Count != 0)
            {
                return(result.ToArray());
            }
            if (executionContextFromTLS.IsStrictVersion(2))
            {
                throw InterpreterError.NewInterpreterException(null, typeof(RuntimeException), null, "PropertyNotFoundStrict", ParserStrings.PropertyNotFoundStrict, new object[] { binder.Name });
            }
            return(null);
        }
コード例 #4
0
ファイル: PSSetMemberBinder.cs プロジェクト: nickchal/pash
 public PSSetMemberBinder(string name, bool ignoreCase, bool @static) : base(name, ignoreCase)
 {
     this._static = @static;
     this._getMemberBinder = PSGetMemberBinder.Get(name, @static);
 }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
            }
        }