Hi,
I am getting the below error from the script, I am not sure, what I have missed. Please help
Script
$dept = @'
Dept,Head
Learning,Lisa
Sales,Stev
'@
$deptTab = @{}
ConvertFrom-Csv -InputObject $dept -UseCulture |
ForEach-Object -Process {
$deptTab.Add($_.Dept,$_.Head)
}
#VM Summary
function get-mysummary()
{
$report = Get-VM | Group-Object -Property {$_.Folder.Id} | Select @{N="Cluster";E={Get-Cluster -VM $_.Group}},
@{N="Folder Name";E={$folder = $_.Group[0].Folder; $path = $folder.Name; $path}},
@{N='Dept Head';E={$deptTab[$folder = $_.Group[0].Folder; $path = $folder.Name; $path]}},
@{N="CPU";E={$_.Group | Measure-Object -Property NumCpu -Sum | Select -ExpandProperty Sum}},
@{N="Memory(GB)";E={$_.Group | Measure-Object -Property MemoryGB -Sum | Select -ExpandProperty Sum}},
@{N="Total VM's";E={$_.Group.Count}},
@{N="PoweredOn VM's";E={($_.Group | Where-Object {$_.PowerState -eq "PoweredOn"}).Count}},
@{N="PoweredOff VM's";E={($_.Group | Where-Object {$_.PowerState -eq "PoweredOff"}).Count}}
$sum = $report | Measure-Object -sum "CPU", "Memory(GB)", "Capacity(GB)", "UsedSpace(GB)", "FreeSpace(GB)", "FreeSpace(%)", "Total VM's", "PoweredOn VM's", "PoweredOff VM's"
$row1 = "" | Select "Folder Name","Cluster","CPU","Memory(GB)","Capacity(GB)","UsedSpace(GB)","FreeSpace(GB)","FreeSpace(%)","Total VM's","PoweredOn VM's","PoweredOff VM's"
$report += $row1
$row2 = "" | Select "Folder Name","Cluster","CPU","Memory(GB)","Capacity(GB)","UsedSpace(GB)","FreeSpace(GB)","FreeSpace(%)","Total VM's","PoweredOn VM's","PoweredOff VM's"
$row2."Folder Name" = 'Total'
$row2.CPU = $sum | where{$_.Property -eq 'CPU'} | select -ExpandProperty Sum
$row2."Memory(GB)" = $sum | where{$_.Property -eq "Memory(GB)"} | select -ExpandProperty Sum
$row2."Total VM's" = $sum | where{$_.Property -eq "Total VM's"} | select -ExpandProperty Sum
$row2."PoweredOn VM's" = $sum | where{$_.Property -eq "PoweredOn VM's"} | select -ExpandProperty Sum
$row2."PoweredOff VM's" = $sum | where{$_.Property -eq "PoweredOff VM's"} | select -ExpandProperty Sum
$report += $row2
$report
}
get-mysummary
Output :
At D:\vm_folder_info_7.0.ps1:54 char:38
+ @{N='Dept Head';E={$deptTab[$folder = $_.Group[0].Folder; $path = $ ...
+ ~
Missing ']' after array index expression.
At D:\vm_folder_info_7.0.ps1:54 char:88
+ ... deptTab[$folder = $_.Group[0].Folder; $path = $folder.Name; $path]}},
+ ~
Unexpected token ']' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : MissingEndSquareBracket
Try like this
Dept,Head
Learning,Lisa
Sales,Stev
'@
$deptTab = @{}
ConvertFrom-Csv -InputObject $dept -UseCulture |
ForEach-Object -Process {
$deptTab.Add($_.Dept,$_.Head)
}
#VM Summary
function get-mysummary()
{
$report = Get-VM | Group-Object -Property {$_.Folder.Id} |
Select @{N="Cluster";E={Get-Cluster -VM $_.Group}},
@{N="Folder Name";E={$_.Group[0].Folder.Name}},
@{N='Dept Head';E={$deptTab[$_.Group[0].Folder.Name]}},
@{N="CPU";E={$_.Group | Measure-Object -Property NumCpu -Sum | Select -ExpandProperty Sum}},
@{N="Memory(GB)";E={$_.Group | Measure-Object -Property MemoryGB -Sum | Select -ExpandProperty Sum}},
@{N="Total VM's";E={$_.Group.Count}},
@{N="PoweredOn VM's";E={($_.Group | Where-Object {$_.PowerState -eq "PoweredOn"}).Count}},
@{N="PoweredOff VM's";E={($_.Group | Where-Object {$_.PowerState -eq "PoweredOff"}).Count}}
$sum = $report | Measure-Object -sum "CPU", "Memory(GB)", "Capacity(GB)", "UsedSpace(GB)", "FreeSpace(GB)", "FreeSpace(%)", "Total VM's", "PoweredOn VM's", "PoweredOff VM's"
$row1 = "" | Select "Folder Name","Cluster","CPU","Memory(GB)","Capacity(GB)","UsedSpace(GB)","FreeSpace(GB)","FreeSpace(%)","Total VM's","PoweredOn VM's","PoweredOff VM's"
$report += $row1
$row2 = "" | Select "Folder Name","Cluster","CPU","Memory(GB)","Capacity(GB)","UsedSpace(GB)","FreeSpace(GB)","FreeSpace(%)","Total VM's","PoweredOn VM's","PoweredOff VM's"
$row2."Folder Name" = 'Total'
$row2.CPU = $sum | where{$_.Property -eq 'CPU'} | select -ExpandProperty Sum
$row2."Memory(GB)" = $sum | where{$_.Property -eq "Memory(GB)"} | select -ExpandProperty Sum
$row2."Total VM's" = $sum | where{$_.Property -eq "Total VM's"} | select -ExpandProperty Sum
$row2."PoweredOn VM's" = $sum | where{$_.Property -eq "PoweredOn VM's"} | select -ExpandProperty Sum
$row2."PoweredOff VM's" = $sum | where{$_.Property -eq "PoweredOff VM's"} | select -ExpandProperty Sum
$report += $row2
$report
}
get-mysummary
---------------------------------------------------------------------------------------------------------
Was it helpful? Let us know by completing this short survey here.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Try like this
Dept,Head
Learning,Lisa
Sales,Stev
'@
$deptTab = @{}
ConvertFrom-Csv -InputObject $dept -UseCulture |
ForEach-Object -Process {
$deptTab.Add($_.Dept,$_.Head)
}
#VM Summary
function get-mysummary()
{
$report = Get-VM | Group-Object -Property {$_.Folder.Id} |
Select @{N="Cluster";E={Get-Cluster -VM $_.Group}},
@{N="Folder Name";E={$_.Group[0].Folder.Name}},
@{N='Dept Head';E={$deptTab[$_.Group[0].Folder.Name]}},
@{N="CPU";E={$_.Group | Measure-Object -Property NumCpu -Sum | Select -ExpandProperty Sum}},
@{N="Memory(GB)";E={$_.Group | Measure-Object -Property MemoryGB -Sum | Select -ExpandProperty Sum}},
@{N="Total VM's";E={$_.Group.Count}},
@{N="PoweredOn VM's";E={($_.Group | Where-Object {$_.PowerState -eq "PoweredOn"}).Count}},
@{N="PoweredOff VM's";E={($_.Group | Where-Object {$_.PowerState -eq "PoweredOff"}).Count}}
$sum = $report | Measure-Object -sum "CPU", "Memory(GB)", "Capacity(GB)", "UsedSpace(GB)", "FreeSpace(GB)", "FreeSpace(%)", "Total VM's", "PoweredOn VM's", "PoweredOff VM's"
$row1 = "" | Select "Folder Name","Cluster","CPU","Memory(GB)","Capacity(GB)","UsedSpace(GB)","FreeSpace(GB)","FreeSpace(%)","Total VM's","PoweredOn VM's","PoweredOff VM's"
$report += $row1
$row2 = "" | Select "Folder Name","Cluster","CPU","Memory(GB)","Capacity(GB)","UsedSpace(GB)","FreeSpace(GB)","FreeSpace(%)","Total VM's","PoweredOn VM's","PoweredOff VM's"
$row2."Folder Name" = 'Total'
$row2.CPU = $sum | where{$_.Property -eq 'CPU'} | select -ExpandProperty Sum
$row2."Memory(GB)" = $sum | where{$_.Property -eq "Memory(GB)"} | select -ExpandProperty Sum
$row2."Total VM's" = $sum | where{$_.Property -eq "Total VM's"} | select -ExpandProperty Sum
$row2."PoweredOn VM's" = $sum | where{$_.Property -eq "PoweredOn VM's"} | select -ExpandProperty Sum
$row2."PoweredOff VM's" = $sum | where{$_.Property -eq "PoweredOff VM's"} | select -ExpandProperty Sum
$report += $row2
$report
}
get-mysummary
---------------------------------------------------------------------------------------------------------
Was it helpful? Let us know by completing this short survey here.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Thank you very much LucD, that worked