1

Недавно у меня возникла проблема с сообщением PowerShell о том, что метод не существует в объекте, в то время как Get-Member сообщает, что он существует. Это не случается со всеми методами, но у меня было это более чем в одном случае.

Вот скриншот одного примера в ISE.

1 ответ1

1

Ваша переменная $x содержит массив. Когда вы передаете массив в функцию, конвейер не передает экземпляр массива в функцию; он передает элементы массива в блок process функции, по одному за раз.

Get-Member на самом деле показывает вам элементы строки 'c' - последний элемент в массиве - а не члены самого массива. (Обратите внимание, что вывод на скриншоте начинается с TypeName: System.String .)

Если вы хотите увидеть элементы для самого $x (массива), передайте его в Get-Member с помощью параметра -InputObject вместо его передачи по трубопроводу.

$X='a','b','c'; gm -InputObject $x

Тогда вы увидите, что ваш $x имеет тип System.Object[] и не содержит метод Remove . (Вы не можете удалять элементы, потому что это изменило бы длину массива, а массивы в .NET имеют фиксированную длину.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .