Groups > Microsoft > Windows PowerShell > Re: Unexpected error $instance.psobject.members.Add($member)




Unexpected error $instance.psobject.members.Add($member)

Unexpected error $instance.psobject.members.Add($member)
Thu, 10 Apr 2008 05:47:10 -070
This code creates a synthetic object.

     $instance = new-object Management.Automation.PSObject
     Add-Member -InputObject $instance NoteProperty 'Type' $type
     write-host "Instance created - $type"
     $instance.psobject.members|write-host
     foreach ($member in $members)
     {   Write-Host "Adding member '$($member.name)'"
         $instance.psobject.members.Add($member)
     }

As you can see in the output below, all the members
are added except the 'ToString'  psScriptMethod.
But I get no error if I add this very same method to
this very same object, using exactly the same syntax,
at the command prompt.
Can anyone give me a hint why?

Instance created - PFW_FileID
System.String Type=PFW_FileID
System.String ToString()
System.Type GetType()
System.Boolean Equals(Object obj)
System.Int32 GetHashCode()Adding member 'LName'
Adding member 'EventNumber'
Adding member 'ToString'
Exception calling "Add" with "1" argument(s): "A
PSProperty or
PSMethod object cannot be added to this collection."
At C:\...\Define_Class.ps1:84 char:40
+          $instance.psobject.members.Add <<<< ($member)
Adding member 'Match'
Post Reply
Re: Unexpected error $instance.psobject.members.Add($member)
Thu, 10 Apr 2008 06:37:09 -070
On Apr 10, 7:47 am, RickB <rbiel...@i1.net> wrote:
> This code creates a synthetic object.
>
>      $instance = new-object Management.Automation.PSObject
>      Add-Member -InputObject $instance NoteProperty 'Type' $type
>      write-host "Instance created - $type"
>      $instance.psobject.members|write-host
>      foreach ($member in $members)
>      {   Write-Host "Adding member '$($member.name)'"
>          $instance.psobject.members.Add($member)
>      }
>
> As you can see in the output below, all the members
> are added except the 'ToString'  psScriptMethod.
> But I get no error if I add this very same method to
> this very same object, using exactly the same syntax,
> at the command prompt.
> Can anyone give me a hint why?
>
> Instance created - PFW_FileID
> System.String Type=PFW_FileID
> System.String ToString()
> System.Type GetType()
> System.Boolean Equals(Object obj)
> System.Int32 GetHashCode()Adding member 'LName'
> Adding member 'EventNumber'
> Adding member 'ToString'
> Exception calling "Add" with "1" argument(s): "A
PSProperty or
> PSMethod object cannot be added to this collection."
> At C:\...\Define_Class.ps1:84 char:40
> +          $instance.psobject.members.Add <<<< ($member)
> Adding member 'Match'

Sorry,
Never mind.

I was caching the ScriptMethods like this.
Obviously there would be a native Method called ToString
so my synthetic member was never being created.  The native
method really was a duplicate and thus the error.

   if ($class.$name -eq $null) {
      Add-Member -InputObject $class ScriptMethod $name $script}
Post Reply
Re: Unexpected error $instance.psobject.members.Add($member)
Thu, 10 Apr 2008 10:47:50 -030
> At C:\...\Define_Class.ps1:84 char:40
> +          $instance.psobject.members.Add <<<< ($member)
> Adding member 'Match'
> 

Are you able to provide us with all of the code?  We don't see how $type 
and $members are defined, for example.

Marco

-- 
Microsoft MVP - Windows PowerShell
http://www.microsoft.com/mvp

PowerGadgets MVP
http://www.powergadgets.com/mvp

Blog:
Post Reply
about | contact