了解使用 cmdlet 的 PowerShell 管道/过滤

了解使用 cmdlet 的 PowerShell 管道/过滤

考虑有关故障转移群集的以下 PowerShell 命令:

Get-ClusterGroup "UKMAC-XA54" | Get-ClusterResource

第一个 cmdlet 返回一个带有字段 Name、OwnerNode 和 State 的 ClusterGroup 对象。

如果将 Get-ClusterResource 留给它自己的设备,它将返回有关集群中所有资源的信息。

然而,在管道中使用时,显然会进行一些过滤。

我的问题是“这种过滤是如何工作的?”。PowerShell 如何知道使用 Get-ClusterGroup 中的 OwnerNode 字段来过滤 Get-ClusterResource?两个 cmdlet 中都返回了“名称”字段,为什么它不过滤“名称”​​?(实际上不起作用)。

关于这个主题的参考链接就很好了。

答案1

管道对象(调用返回的对象Get-ClusterGroup)将传递-InputObjectGet-ClusterResourcecmdlet。如果您阅读参数的帮助-InputObject,就会看到这一点,其中指出参数接受管道输入(按值)。

该参数的文档-InputObject进一步指出它“指定要枚举集群资源的集群节点或集群组。”这意味着过滤是根据传递给此参数的对象完成的。

我建议阅读有关管道如何工作的帮助部分,您可以运行它:

Get-Help about_Pipelines

并且,您可以阅读有关 cmdlet 的详细帮助Get-ClusterResource,以查看哪些参数接受管道输入(以及它们是按值还是按名称接受,您可以在有关管道的帮助部分中阅读有关详细信息)如果您运行:

Get-Help Get-ClusterResource -Full

相关内容