VMware Cloud Community
ganapa2000
Hot Shot
Hot Shot
Jump to solution

Missing ']' after array index expression.

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

Reply
0 Kudos
1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

Try like this

$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={$_.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

View solution in original post

Reply
0 Kudos
2 Replies
LucD
Leadership
Leadership
Jump to solution

Try like this

$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={$_.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

Reply
0 Kudos
ganapa2000
Hot Shot
Hot Shot
Jump to solution

Thank you very much LucD, that worked Smiley Happy

Reply
0 Kudos