一个新手问题:
命令:
[Math] | Get-Member
返回的所有成员System.RuntimeType
.这是为什么?
还有命令:
Get-Member -InputObject [Math]
返回的所有成员System.String
.如果[Math]
在这里被解释为字符串,我怎样才能使它成为数学对象?
此外,是否Get-member
需要任何位置参数?我该怎么说?
您正在从[Math]获取System.RuntimeType,因为它就是这样.它是一种类型,而不是该特定类型的对象.您实际上没有构建[Math]对象.如果输入,您将获得相同的输出:
[String] | gm
但是,如果您从String类型构造了一个字符串对象,您将获得字符串成员:
PS C:\> [String]("hi") | gm TypeName: System.String Name MemberType Definition ---- ---------- ---------- Clone Method System.Object Clone() CompareTo Method System.Int32 CompareTo(Object value), System.Int32 CompareTo(String strB) Contains Method System.Boolean Contains(String value) CopyTo Method System.Void CopyTo(Int32 sourceIndex, Char[] destination, Int32 destinationIn... etc...
由于System.Math只有静态成员,因此无法构造它的对象.要查看它的成员,您可以使用System.RuntimeType的GetMembers()函数:
[Math].GetMethods()
您可以使用format-*cmdlet之一来格式化输出:
[Math].GetMethods() | format-table
编辑:哦,我应该添加,调用其中一个静态成员,你会这样做:
[Math]::Cos(1.5)
我刚刚写了一篇关于使用PowerShell探索类的静态成员的博客文章,这可能有所帮助.
当您将[Math]传递给Get-Member时,您正在传递System.RunTimeType的对象,并且它确实返回该类型的成员.
Get-Member有一个switch参数,允许您检查类的所有静态成员:
[Math] | get-member -static
如果需要查找实例成员,则需要创建类的实例并将其传递给Get-Member.