Ваша переменная $x
содержит массив. Когда вы передаете массив в функцию, конвейер не передает экземпляр массива в функцию; он передает элементы массива в блок process
функции, по одному за раз.
Get-Member
на самом деле показывает вам элементы строки 'c'
- последний элемент в массиве - а не члены самого массива. (Обратите внимание, что вывод на скриншоте начинается с TypeName: System.String
.)
Если вы хотите увидеть элементы для самого $x
(массива), передайте его в Get-Member
с помощью параметра -InputObject
вместо его передачи по трубопроводу.
$X='a','b','c'; gm -InputObject $x
Тогда вы увидите, что ваш $x
имеет тип System.Object[]
и не содержит метод Remove
. (Вы не можете удалять элементы, потому что это изменило бы длину массива, а массивы в .NET имеют фиксированную длину.)