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

时间:2018-04-12 19:20:58

标签: powershell vmware powershell-v3.0 powercli

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

我试过了:

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

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

我可以通过过滤完成我想要做的事情吗?我正在努力避免另一次Get-Datastore的调用以提高效率。

1 个答案:

答案 0 :(得分:1)

对象中有一个键需要在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;} 

该密钥中包含主机名...