我如何过滤数据存储数组,以便留下那些在ExtensionData.Host数组中有主机的数据?
我试过了:
$Datastores = Get-Datastore
$HostDS = $Datastores | Where-Object{$_.ExtensionData.Host -contains $clusterhost}
但这不起作用,因为$Datastore.ExtensionData.Host
中的主机数组不属于数据存储区对象,而属于DatastoreHostMount
个对象。主机挂载对象具有我想要的主机的ID,但我不知道如何将它们与我想要比较它们的$clusterhost
的ID进行比较。
我可以通过过滤完成我想要做的事情吗?我正在努力避免另一次Get-Datastore
的调用以提高效率。
答案 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;}
该密钥中包含主机名...