当方法存在时,PowerShell 会报告缺少方法

当方法存在时,PowerShell 会报告缺少方法

我最近遇到了一个问题,PowerShell 报告某个对象上不存在某个方法,而Get-Member报告却显示该方法存在。并非所有方法都会发生这种情况,但我遇到过不止一次这种情况。

这是 ISE 中的一个示例的屏幕截图。

在此处输入图片描述

答案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 中的数组是固定长度的。)

相关内容