trying to get these info on a list of VMs
get-vm | select Name, numcpu, memorygb, @{N="Hard Disk"; E={get-harddisk -VM $_ }
guess I am getting this syntax wrong
any help appreciated
thanks
how do I display
it like this
hard disk 1 capacitygb
hard disk2 capacitygb
$results = @()
foreach ($vm in Get-Vm)
{
foreach ($vmHardDisk in $vm | Get-HardDisk)
{
$result = "" | select vmName,NumCpu,MemoryGB,harddiskname,HardDiskCapacityGb
$result.vmName = $vm.Name
$result.NumCpu = $vm.NumCpu
$result.MemoryGB = $vm.MemoryGB
$result.HardDiskName = $vmHardDisk.Name
$result.HardDiskCapacityGb = [System.Math]::Round($vmHardDisk.CapacityGB, 0)
$results += $result
}
}
$results | ft -AutoSize
Pipeline only and without the Get-View cmdlets
Get-VM | Get-HardDisk |
select @{N='VM';E={$_.Parent.Name}},
@{l="NumCpu";e={$_.Parent.numcpu}},
@{l="MemoryGB";e={$_.Parent.MemoryGB}},
Name,CapacityGB |
Format-Table -AutoSize
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Agreed, the parent is nice!
Thank you pros!
Hi
I am wondering how come I am coming up with an error when I use
foreach ($vm in get-content vms.txt)
get-HardDisk : Cannot process argument transformation on parameter 'Datastore'. Strings as pipeline input are not supported.
At line:1 char:7
+ $VM | Get-HardDisk
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (xjzxbwg1105x:PSObject) [Get-HardDisk], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.VirtualDevice.GetHardDisk
Where did you change that?
Can you show the complete script that generates the error?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
$results = @()
$vms = get-content "c:\scripts\servers.txt"
foreach ($vm in $vms) {
foreach ($vmharddisk in $vm | get-harddisk) {
$result = "" | select vmname, harddiskname, harddiskcapacitygb
$result.vmname = $vm.name
$result.harddiskname = $vmharddisk.name
$result.harddiskcapacitygb = [system.math]::Round($vmharddisk.capacitygb, 0)
$results += $result
}
}
$results | ft -auto
The Get-HardDisk cmdlet doesn't accept a string as the VM name over the pipeline, only on the VM parameter.
Do like this
$results = @()
foreach ($vm in Get-VM (Get-Content vms.txt)){
foreach ($vmharddisk in $vm | get-harddisk) {
$result = "" | select vmname, harddiskname, harddiskcapacitygb
$result.vmname = $vm.name
$result.harddiskname = $vmharddisk.name
$result.harddiskcapacitygb = [system.math]::Round($vmharddisk.capacitygb, 0)
$results += $result
}
}
$results | ft -auto
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi,
How to display result as
VM NumCpu MemoryGB CapacityGB
-- ------ -------- ---- ----------
TEST228 1 2 70GB,50GB
instead of
VM NumCpu MemoryGB Name CapacityGB
-- ------ -------- ---- ----------
TEST228 1 2 Hard disk 1 70
TEST228 1 2 Hard disk 2 50
Thanks in advance!!!!
You can try
Get-VM | Select Name, NumCpu, MemoryGB, @{N="HardDisk(GB)"; E={[math]::round((Get-HardDisk -VM $_ | Measure-Object -Sum CapacityGB).Sum,0)}} | ft -auto
Thanks but I dont want to sum it..just want to list all the hard disk in single line.
VM NumCpu MemoryGB CapacityGB
TEST228 1 2 70GB,50GB
Try like this
select @{N='VM';E={$_.Name}},
NumCpu,MemoryGB,
@{N='CapacityGB';E={(Get-HardDisk -VM $_).CapacityGB -join ','}} |
Format-Table -AutoSize
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Awesome!! Thanks LucD