$x variable holds an array. When you pipe an array into a function, the pipeline doesn't pass the array instance into the function; it passes the array's elements into the function's
process block, one at a time.
Get-Member is actually showing you the members of the string
'c' -- the last element in the array -- rather than the members of the array itself. (Notice that the output in your screenshot starts with
If you want to see the members for
$x (the array) itself, pass it into
Get-Member using the
-InputObject parameter, instead of piping it in.
$X='a','b','c'; gm -InputObject $x
Then you'll see that your
$x is of type
System.Object and doesn't contain a
Remove method. (You can't remove items because that would change the array's length, and arrays in .NET are fixed-length.)