发现对象

已完成

运行 cmdlet 运行时,将返回一个对象。 调用 cmdlet 时,所看到的响应已被格式化,并可能不一定表示响应的所有可用信息。 若要详细了解正在返回的内容以及如何修改返回的内容,可以使用命令 Get-Member

使用 Get-Member 发现对象

Get-Member cmdlet 将基于命令进行传递,以便可以筛选输出Get-Member 的典型命令行调用如以下示例所示:

Get-Process -Name 'name-of-process' | Get-Member

此命令首先通过调用 Get-Process 生成对象结果。 该结果通过使用管道 (|) 作为输入传递给 Get-Member。 在返回结果中,你将获得一个表,其中包含 NameMemberTypeDefinition 列。 你还会获得返回对象的类型。

提示

若要获取计算机上运行的进程列表,请运行 Get-Process

按类型搜索

运行 Get-Member 命令时响应的第一行是返回对象的类型。 知道类型后,可搜索对同一类型运行的其他 cmdlet。 浏览这些相关命令,快速了解你所使用的域。

假设你调用了 PowerShell 命令来列出特定进程的所有成员。 结果的前几行看起来类似于以下输出:

  TypeName: System.Diagnostics.Process

Name                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount

第一行指示类型为 System.Diagnostics.Process。 使用此类型作为搜索参数,查找使用此类型的其他 cmdlet。 下面是一个示例命令:

Get-Command -ParameterType Process

结果是在此类型上操作的 cmdlet 列表。 通过使用 Get-Member 并学着解释其结果,你就慢慢了解 PowerShell 了。

提示

PowerShell 只需一次了解一点就可以了。 发现相关 cmdlet 的一个好方法是使用返回的类型按类型搜索 cmdlet。

使用 Select-Object 筛选 Get-Member 结果

运行 Get-Member 时,结果是详细的。 也就是说,会返回很多行。 对象可能包括事件和方法等属性。 若要使答案更简洁,可以筛选特定列,还可决定要显示的列。 请记住,返回的答案已是响应中所有列的子集。

查看包含许多列的 Get-Member 响应。 通过引入 cmdlet Select-Object,你可以选择在响应中显示哪些列。 此命令需要一个逗号分隔的列名称列表或一个指示所有列的通配符(如星号 *)。

Select-Object Name, MemberType 上下文中使用 Select-Object 命令时,只需指定所需的列。 在此例中,列为 NameMemberType。 命令行如下所示:

Get-Process -Name 'name-of-process' | Get-Member | Select-Object Name, MemberType

此筛选模式返回的输出包含的列较少。 下面是结果示例:

Name                           MemberType
----                           ----------
Handles                     AliasProperty

还可按行筛选响应。 例如,可使用标志 -MemberType Method 来指定你对成员类型为方法的行感兴趣。 你可能只希望显示特定的行,例如,要查找并运行特定方法。

提示

通常,使用专用 cmdlet 比在对象上运行方法更好。