PowerCLI - 如何按使用它们的主机过滤数据存储

PowerCLI - How to filter datastores by hosts which use them

我将如何过滤数据存储数组,以便我只剩下那些在 ExtensionData.Host 数组中有主机的数据存储?

我试过:

$Datastores = Get-Datastore
$HostDS = $Datastores | Where-Object{$_.ExtensionData.Host -contains $clusterhost}

但这不起作用,因为 $Datastore.ExtensionData.Host 中的主机数组不是数据存储对象,而是 DatastoreHostMount 对象。主机挂载对象具有我想要的主机的 ID,但我不知道如何将它们与 $clusterhost 的 ID 进行比较,我正在尝试将它们与

进行比较

我可以通过筛选来完成我在这里尝试做的事情吗?我试图避免再次调用 Get-Datastore 以提高效率。

您需要在 where 子句中使用的对象中有一个键:

$hostds = Datastores | where-object{$_.extensiondata.host.key -eq $clusterhost}

Name                               FreeSpaceGB      CapacityGB
----                               -----------      ----------
Name2                            x,xxx.xxx       xx,xxx.xxx
Name1                                x,xxx.xxx       xx,xxx.xxx



$datastores.extensiondata.host  |gm

TypeName: VMware.Vim.DatastoreHostMount

Name        MemberType Definition                                                
----        ---------- ----------                                                
Equals      Method     bool Equals(System.Object obj)                            
GetHashCode Method     int GetHashCode()                                         
GetType     Method     type GetType()                                            
ToString    Method     string ToString()                                         
Key         Property   VMware.Vim.ManagedObjectReference Key {get;set;}          
LinkedView  Property   VMware.Vim.DatastoreHostMount_LinkedView LinkedView {get;}
MountInfo   Property   VMware.Vim.HostMountInfo MountInfo {get;set;} 

那个键里面有主机名...