PowerCLI - 在一个可用的集群中查找数据存储
PowerCLI - find datastores in a available to a custer
我正在尝试找到一种方法来获取集群中可用的数据存储列表。
到目前为止,我做到了这一点:
= get-view -viewtype ClusterComputeResource
| select name,datastore
这将列出 clasters 和数据存储,但名称与 vCenter 服务器中的名称不匹配。
当 运行 时,我可以看到两个名字,但没有 custer 信息:
Get-Datastore | select id,name
我如何将这些信息放在一起,这样我就有了 ClusterName(名称 - 来自第一个命令)、DatastoreName(名称 - 来自第二个命令)。
这似乎可以做到
(get-cluster).extensiondata | fl name,datastore
编辑以获取名称而不是 id
$clusters = get-cluster
Foreach ($cluster in $clusters)
{
$cluster | get-datastore | % {
[pscustomobject] @{
'cluster' = $cluster.name
'datastore' = $_.name
}
}
}
$datastore = Get-Datastore
$datastore.extensionData
这将为您提供更详细的商店列表。这个很难。我想我可能必须通过 API.
来完成
是的,这花了我一段时间,但我从这里找到了一种使用 Join-Object 函数来实现的方法:
https://blogs.msdn.microsoft.com/powershell/2012/07/13/join-object/
$cluster = get-cluster | select name | % {$counter = -1} {$counter++; $_ | Add-Member -Name Cluster_ID -Value $counter -MemberType NoteProperty -PassThru}
$cluster | ft -auto
$clusterid = read-host "select cluster"
$VMCLUSTER = $cluster[$clusterid]
# Select Datastore
= get-view -viewtype ClusterComputeResource | where name -like $vmcluster.name | select name,datastore
$table1 = @()
foreach ($datastore in .Datastore) {
$table = " " | select datastore_ID,Cluster_Name
$table.datastore_ID = $datastore
$table.Cluster_name = .Name
$table1 += $table
}
$datastores = Join-Object -Left $table1 -Right (Get-datastore | select id,name,FreeSpaceGB,CapacityGB) -Where { $args[0].datastore_ID -eq $args[1].id} -LeftProperties 'Cluster_Name' -RightProperties * -Type AllInLeft
$datastores | % {$counter = -1} {$counter++; $_ | Add-Member -Name Datastore_ID -Value $counter -MemberType NoteProperty -PassThru} | select Datastore_ID,Cluster_Name,Name,FreeSpaceGB,CapacityGB | Sort-Object FreeSpaceGB -Descending | ft -AutoSize
$datastoreid = read-host "Select Datastore (enter Datastore_ID)"
$selected_datastore = $datastores[$datastoreid]
我正在尝试找到一种方法来获取集群中可用的数据存储列表。 到目前为止,我做到了这一点:
= get-view -viewtype ClusterComputeResource
| select name,datastore
这将列出 clasters 和数据存储,但名称与 vCenter 服务器中的名称不匹配。
当 运行 时,我可以看到两个名字,但没有 custer 信息:
Get-Datastore | select id,name
我如何将这些信息放在一起,这样我就有了 ClusterName(名称 - 来自第一个命令)、DatastoreName(名称 - 来自第二个命令)。
这似乎可以做到
(get-cluster).extensiondata | fl name,datastore
编辑以获取名称而不是 id
$clusters = get-cluster
Foreach ($cluster in $clusters)
{
$cluster | get-datastore | % {
[pscustomobject] @{
'cluster' = $cluster.name
'datastore' = $_.name
}
}
}
$datastore = Get-Datastore
$datastore.extensionData
这将为您提供更详细的商店列表。这个很难。我想我可能必须通过 API.
来完成是的,这花了我一段时间,但我从这里找到了一种使用 Join-Object 函数来实现的方法: https://blogs.msdn.microsoft.com/powershell/2012/07/13/join-object/
$cluster = get-cluster | select name | % {$counter = -1} {$counter++; $_ | Add-Member -Name Cluster_ID -Value $counter -MemberType NoteProperty -PassThru}
$cluster | ft -auto
$clusterid = read-host "select cluster"
$VMCLUSTER = $cluster[$clusterid]
# Select Datastore
= get-view -viewtype ClusterComputeResource | where name -like $vmcluster.name | select name,datastore
$table1 = @()
foreach ($datastore in .Datastore) {
$table = " " | select datastore_ID,Cluster_Name
$table.datastore_ID = $datastore
$table.Cluster_name = .Name
$table1 += $table
}
$datastores = Join-Object -Left $table1 -Right (Get-datastore | select id,name,FreeSpaceGB,CapacityGB) -Where { $args[0].datastore_ID -eq $args[1].id} -LeftProperties 'Cluster_Name' -RightProperties * -Type AllInLeft
$datastores | % {$counter = -1} {$counter++; $_ | Add-Member -Name Datastore_ID -Value $counter -MemberType NoteProperty -PassThru} | select Datastore_ID,Cluster_Name,Name,FreeSpaceGB,CapacityGB | Sort-Object FreeSpaceGB -Descending | ft -AutoSize
$datastoreid = read-host "Select Datastore (enter Datastore_ID)"
$selected_datastore = $datastores[$datastoreid]