发现对象
运行 cmdlet 运行时,将返回一个对象。 调用 cmdlet 时,所看到的响应已被格式化,并可能不一定表示响应的所有可用信息。 若要详细了解正在返回的内容以及如何修改返回的内容,可以使用命令 Get-Member
。
使用 Get-Member 发现对象
Get-Member
cmdlet 将基于命令进行传递,以便可以筛选输出。 Get-Member
的典型命令行调用如以下示例所示:
Get-Process -Name 'name-of-process' | Get-Member
此命令首先通过调用 Get-Process
生成对象结果。 该结果通过使用管道 (|
) 作为输入传递给 Get-Member
。 在返回结果中,你将获得一个表,其中包含 Name
、MemberType
和 Definition
列。 你还会获得返回对象的类型。
提示
若要获取计算机上运行的进程列表,请运行 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
命令时,只需指定所需的列。 在此例中,列为 Name
和 MemberType
。 命令行如下所示:
Get-Process -Name 'name-of-process' | Get-Member | Select-Object Name, MemberType
此筛选模式返回的输出包含的列较少。 下面是结果示例:
Name MemberType
---- ----------
Handles AliasProperty
还可按行筛选响应。 例如,可使用标志 -MemberType Method
来指定你对成员类型为方法的行感兴趣。 你可能只希望显示特定的行,例如,要查找并运行特定方法。
提示
通常,使用专用 cmdlet 比在对象上运行方法更好。