我在Powershell 2.0中的Win XP和Windows Server 2008 R2上测试了这个:
$a = 1,2,3,4 # a simple [object[]] but any other Type is good
如果我这样做:
$a.addres()
返回错误是(正确):
Method invocation failed because [System.Object[]] doesn't contain a method named 'addres'.
但如果我这样做:
$a.address()
错误是:
Cannot find an overload for "Address" and the argument count: "0".
但是这样做:
$a.address(2)
使用'Problem Event Name: APPCRASH'
从那个[system.array]
开始还没有一个名为address
的方法,powershell如何尝试调用现有方法?
答案 0 :(得分:3)
[System.Array]具有.Get,.Set和.Address方法,这些方法可通过.Net运行时获得,但通常不在Powershell代码中使用。看看这个StackOverflow article:
答案 1 :(得分:1)
我之前提交过这个bug。他们在V3中修复了它,并发布了Keith发布的异常消息(可能会破坏运行时的稳定性)