VMware 集群 > 主机 > 虚拟机数据网格视图
VMware Cluster > Host > VM datagrid view
我想创建一个简单的 powershell 脚本,它将获取 vcenter 中的所有集群,并为每个集群获取该集群中的主机列表,然后列出该集群中的所有 VM。我可以很容易地创建数据网格,但不确定如何使用它来更改行大小。
目前我有这个,但我不知道它是否真的有效:
$Grid.Columns["Hosts"].DefaultCellStyle.WrapMode = [System.Windows.Forms.DataGridViewTriState]::True
目前,当我 运行 它时,我得到了包含 3 列(集群、主机、虚拟机)的网格。但是在主机和虚拟机中它显示 System.Object[] 而不是列出所有主机和虚拟机。
最后,如果说列表中有 5 台主机,该行是否可以增加到 5 行宽。如果在同一个集群中有 14 个虚拟机,我可以让它列出虚拟机说 5,然后 5,然后 4(所以几乎在行中有列)?
以下是我获取集群、主机和 VM 的功能。也许我的问题在于为什么显示 System.Object:
Function Get-Info
{
$clusters = Get-Cluster
Foreach ($cluster in $clusters)
{
$hosts = get-cluster -name $cluster | get-vmhost | select Name
$vms = get-cluster -name $cluster | get-vm | select Name
$Grid.Rows.Add($cluster,$hosts,$vms)
}
}
离开它后进行一些挖掘,我能够将我的代码修改为下面的代码,它将采用多个值并用分号连接它们。这允许我将它们转储到 Excel sheet 中,然后我可以在分号上做一个 Find/replace 来分隔值。
此外,我构建了一个数组来添加我想要的值并将其通过管道传输到 CSV 文件中。
$array = @()
$clusters = Get-Cluster
Foreach ($cluster in $clusters)
{
$hosts = get-cluster -name $cluster | get-vmhost
$gethosts = ($hosts.Name | % { (get-vmhost $_).Name;}) -join ';';
$vms = get-cluster -name $cluster | get-vm
$getvms = ($vms.Name | % { (get-vm $_).Name;}) -join ';';
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name "Cluster" -Value $cluster
$obj | Add-Member -MemberType NoteProperty -Name "Hosts" -Value $gethosts
$obj | Add-Member -MemberType NoteProperty -Name "VMs" -Value $getvms
$array += $obj
}
$array | select Cluster, Hosts, VMs| export-csv "c:\temp\test\clusterinfo.csv" -NoTypeInformation -encoding ASCII -force
我想创建一个简单的 powershell 脚本,它将获取 vcenter 中的所有集群,并为每个集群获取该集群中的主机列表,然后列出该集群中的所有 VM。我可以很容易地创建数据网格,但不确定如何使用它来更改行大小。
目前我有这个,但我不知道它是否真的有效:
$Grid.Columns["Hosts"].DefaultCellStyle.WrapMode = [System.Windows.Forms.DataGridViewTriState]::True
目前,当我 运行 它时,我得到了包含 3 列(集群、主机、虚拟机)的网格。但是在主机和虚拟机中它显示 System.Object[] 而不是列出所有主机和虚拟机。
最后,如果说列表中有 5 台主机,该行是否可以增加到 5 行宽。如果在同一个集群中有 14 个虚拟机,我可以让它列出虚拟机说 5,然后 5,然后 4(所以几乎在行中有列)?
以下是我获取集群、主机和 VM 的功能。也许我的问题在于为什么显示 System.Object:
Function Get-Info
{
$clusters = Get-Cluster
Foreach ($cluster in $clusters)
{
$hosts = get-cluster -name $cluster | get-vmhost | select Name
$vms = get-cluster -name $cluster | get-vm | select Name
$Grid.Rows.Add($cluster,$hosts,$vms)
}
}
离开它后进行一些挖掘,我能够将我的代码修改为下面的代码,它将采用多个值并用分号连接它们。这允许我将它们转储到 Excel sheet 中,然后我可以在分号上做一个 Find/replace 来分隔值。
此外,我构建了一个数组来添加我想要的值并将其通过管道传输到 CSV 文件中。
$array = @()
$clusters = Get-Cluster
Foreach ($cluster in $clusters)
{
$hosts = get-cluster -name $cluster | get-vmhost
$gethosts = ($hosts.Name | % { (get-vmhost $_).Name;}) -join ';';
$vms = get-cluster -name $cluster | get-vm
$getvms = ($vms.Name | % { (get-vm $_).Name;}) -join ';';
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name "Cluster" -Value $cluster
$obj | Add-Member -MemberType NoteProperty -Name "Hosts" -Value $gethosts
$obj | Add-Member -MemberType NoteProperty -Name "VMs" -Value $getvms
$array += $obj
}
$array | select Cluster, Hosts, VMs| export-csv "c:\temp\test\clusterinfo.csv" -NoTypeInformation -encoding ASCII -force