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;}
那个键里面有主机名...
我将如何过滤数据存储数组,以便我只剩下那些在 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;}
那个键里面有主机名...