了解PowerShellpipe道/使用cmdlet进行筛选

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

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

第一个cmdlet返回单个ClusterGroup对象,其中包含Name,OwnerNode和State字段。

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

但是,当在stream水线中使用时,显然有一些过滤正在进行。

我的问题是“这个过滤是如何工作的?”。 PowerShell如何知道使用Get-ClusterGroup中的OwnerNode字段来过滤Get-ClusterResource? 在两个cmdlet中都有一个“Name”字段返回,为什么不过滤“Name”? (这实际上不会工作)。

关于这个问题的参考链接将是伟大的。

pipe道对象(由Get-ClusterGroup调用返回的一个/一个)将作为-InputObject传递给Get-ClusterResource cmdlet。 如果您阅读-InputObject参数上的帮助,则可以看到这一点,其中声明该参数接受pipe道input(按值)。

有关-InputObject参数的文档进一步说明它“指定群集节点或群集组以枚举群集资源”。 这意味着过滤是基于传入此参数的对象完成的。

我build议阅读关于pipe道如何工作的帮助部分,你可以运行它:

 Get-Help about_Pipelines 

您可以阅读Get-ClusterResource cmdlet上的详细帮助,以查看哪些参数接受pipe道input(以及它们是按值还是按名称接受它,如果您正在运行,请参阅帮助部分关于pipe道的更多信息):

 Get-Help Get-ClusterResource -Full