【问题标题】:Why doesn't get-service | get-member display the members lots of times?为什么没有得到服务 | get-member 多次显示成员?
【发布时间】:2012-05-01 11:01:30
【问题描述】:

新手警报!我已经开始浏览 PowerShell 的介绍,例如here 并且无法很好地描述他们给出的早期示例发生了什么

get-service | get-member

Get-Service 返回描述正在运行的服务的对象列表。没关系。 Get-Member 显示有关对象上成员的信息。没关系。但是,是什么导致从 get-service 出来的对象的 list 减少到 get-member 的单个对象?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    这就是 Get-Member cmdlet 的工作原理。它接受输入对象,当它是一个集合时,它会显示该集合中每个不同类型的输出。否则这将是多余的信息而不是有用的输出格式,不是吗?由于 Get-Service 返回类型为“ServiceController”的对象集合(并且仅属于该类型),因此您只能看到 Get-Member 的一个输出。

    如果源集合包含不同类型的对象,您将看到 Get-Member 的多个输出。您可以尝试 cmdlet Get-ChildItems,它返回不同类型的文件和不同类型的目录。因此,当您键入Get-ChildItem | Get-Member(在同时具有目录和文件的目录中)时,您将看到两种类型的成员。

    另外一件事:当你想查看集合对象的成员时,你必须在集合前面加逗号。像这样:,(Get-Service) | Get-Member

    【讨论】:

    • 谢谢。 get-member 上的基本文档似乎没有解释这一点。
    • 是的,那里肯定没有!逗号使用的东西也是那个 MSDN 文档页面上最小的东西:)
    • 这不是特定于 get-member 的。这就是所有流水线在 PowerShell 中的工作方式。
    • 这是最初的问题:为什么 Get-Member 不显示发送到其中的每个项目的输出(这是对输出的预期)。 Get-Member 的行为几乎没有什么不同,因为它只考虑类型而不考虑项目。我错了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多