当前位置:  开发笔记 > 编程语言 > 正文

如何使用PowerShell Get-Member cmdlet

如何解决《如何使用PowerShellGet-Membercmdlet》经验,为你挑选了2个好方法。

一个新手问题:

命令:

[Math] | Get-Member

返回的所有成员System.RuntimeType.这是为什么?

还有命令:

Get-Member -InputObject [Math]

返回的所有成员System.String.如果[Math]在这里被解释为字符串,我怎样才能使它成为数学对象?

此外,是否Get-member需要任何位置参数?我该怎么说?



1> zdan..:

您正在从[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)



2> Steven Muraw..:

我刚刚写了一篇关于使用PowerShell探索类的静态成员的博客文章,这可能有所帮助.

当您将[Math]传递给Get-Member时,您正在传递System.RunTimeType的对象,并且它确实返回该类型的成员.

Get-Member有一个switch参数,允许您检查类的所有静态成员:

[Math] | get-member -static

如果需要查找实例成员,则需要创建类的实例并将其传递给Get-Member.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有