一个新手问题:
该命令如下:
[Math] | Get-Member
返回System.RuntimeType
的所有成员。为什么会这样呢?
还可以使用以下命令:
Get-Member -InputObject [Math]
返回System.String
的所有成员。如果[Math]
在这里被解释为字符串,我如何使其成为数学对象?
另外,Get-member
是否接受任何位置参数?我怎么知道呢?
一个新手问题:
该命令如下:
[Math] | Get-Member
返回System.RuntimeType
的所有成员。为什么会这样呢?
还可以使用以下命令:
Get-Member -InputObject [Math]
返回System.String
的所有成员。如果[Math]
在这里被解释为字符串,我如何使其成为数学对象?
另外,Get-member
是否接受任何位置参数?我怎么知道呢?
5条答案
按热度按时间8hhllhi21#
您将从[Math]获得一个System.RounmeType,因为它就是这样的。它是一个类类型,而不是该特定类型的对象。您实际上还没有构造[Math]对象。如果您键入以下命令,您将得到相同的输出:
但是,如果从字符串类型构造了一个字符串对象,则会获得字符串成员:
因为System.Math只有静态成员,所以您不能构造它的对象。要查看其成员,可以使用System.RounmeType的GetMembers()函数:
您可以使用Format-*cmdlet之一来格式化输出:
**编辑:**哦,我还要补充一句,要调用其中一个静态成员,您可以这样做:
pepwfjgg2#
我刚刚写了一个blog post on exploring static members of classes with PowerShell,这可能会有帮助。
当您通过管道将[Math]传递给Get-Members时,您传入的是System.RunTimeType的对象,并且它确实返回了该类型的成员。
Get-Members有一个开关参数,它允许您检查类的所有静态成员:
如果需要查找示例成员,则需要创建要获取成员的类和管道的示例。
qvsjd97n3#
另外,Get-Members是否采用任何位置参数?我怎么知道呢?
如果参数名括在‘[]’中,则该名称是可选的,因此该参数是位置参数。例如,对于Get-Members(如下定义),名称是位置的,但InputObject不是。
Get-Member-name[-Force][-InputObject][-MemberType{AliasProperty|CodeProperty|Pro perty|NoteProperty|ScriptProperty|Properties|PropertySet|方法|CodeMethod|ScriptMethod|Methods|P arameterizedProperty|MemberSet|Event|All}][-Static][-View{Extended|Adapted|Base|All}][]
对于前两个问题,您似乎希望它们的行为像对象一样,但您进入的是一个命名空间/类。如果您执行“1|gm”或“gm-inputoject 1”,您将看到更多您想要/期望的东西。
busg9geu4#
1.使用Get-Help Get-Members命令,您将获得以下输出
名称获取成员
获取对象的属性和方法。
语法Get-Member-name[-Force][-InputObject][-MemberType{AliasProperty|CodeProperty|Pro perty|NoteProperty|ScriptProperty|Properties|PropertySet|方法|CodeMethod|ScriptMethod|Methods|P arameterizedProperty|MemberSet|Event|All}][-Static][-View{Extended|Adapted|Base|All}][]
说明Get-Member cmdlet获取对象的“Members”(属性和方法)。
相关链接在线版本:http://go.microsoft.com/fwlink/?LinkID=113322 Add-Members Get-Help Get-Command Get-PSDrive
备注:要查看示例,请键入:“Get-Help Get-Members-Examples”。如需了解更多信息,请输入:“Get-Help Get-Members-Detailed”。有关技术信息,请键入:“Get-Help Get-Members-Full”。
1.从上面的语句可以看出,Get-Members只接受对象,不接受类。您可以使用-Static查看对象的静态成员。
1.当您使用不带-Static参数的[字符串]时,您是在告诉PowerShell您正在放置一个[字符串]类型的对象,但是,您还没有从您的任何语句创建一个字符串对象,因此它假定[字符串]是一个表示类字符串的System.Runtime对象。这类似于您使用[Int]或[Boolean]和其他类类型。
1.但是,如果您使用-Static参数,PowerShell解释器现在会理解您需要的是字符串对象的静态成员。
jdg4fx2g5#
如果您不希望
[Math]
被视为字符串,并且您也不想通过管道将其输入,则只需将其包含在$()
中,就像您正在使用变量一样,如下所示:这与
[Math] | Get-Member
的功能相同