VMware Cloud Community
pamiller21
Enthusiast
Enthusiast
Jump to solution

Datastore Load Report - Exclude DataStore

I have a report that shows all datastores in a DC and shows what percent is running on that datastore so I can check the load and keep it balanced manually if needed, but I added a cold storage datastore and it's showing up in this report, what is the best way to remove it:

##################

#         Variables         #

###################

$date=Get-Date -format "yyyy-MMM-d"

$datetime=Get-Date

$filelocation="\var\www\NAS-Loads\VDC-NAS-Load\VDC-NAS-Load-$date.htm"

#############################

# Add Text to the HTML file #

#############################

$Header = @"

<style>

TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}

TH {border-width: 1px; padding: 3px; border-style: solid; border-color: black; background-color: #6495ED;}

TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}

</style>

"@

$dcName = 'VDC'

$ds = Get-Datacenter -Name $dcName | Get-Datastore |

  where {$_.Type -eq 'VMFS' -and $_.ExtensionData.Summary.MultipleHostAccess}

$totalSpaceUsed = $ds | % {$_.CapacityGB - $_.FreeSpaceGB} | Measure-Object -Sum | select -ExpandProperty Sum

Get-Stat -Entity $ds -Stat 'disk.used.latest' -Realtime -MaxSamples 1 -Instance '' |

  ForEach-Object -Process {

  New-Object PSObject -Property @{

   Datastore   = $_.Entity.Name

   PercentofTotalSpaceGB = [math]::Round(($_.Value / 1MB) / $totalSpaceUsed * 100, 1)

  }

} |

  Sort-Object -Property Datastore |

  Select Datastore, PercentofTotalSpaceGB |

  ConvertTo-Html -Head $Header |

  Out-File $filelocation

Invoke-Item -Path .\report.html

1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

Assuming that Tag name is 'ColdData', you could do

$ds = Get-Datacenter -Name $dcName | Get-Datastore |

  where {$_.Type -eq 'VMFS' -and

         $_.ExtensionData.Summary.MultipleHostAccess -and

         (Get-TagAssignment -Entity $_).Tag.Name -ne 'ColdData'}


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

8 Replies
LucD
Leadership
Leadership
Jump to solution

Is there a way to identify that datastore? By name, tag, folder, location ...?
If yes, you could extend the Where clause in

$ds = Get-Datacenter -Name $dcName | Get-Datastore |

  where {$_.Type -eq 'VMFS' -and $_.ExtensionData.Summary.MultipleHostAccess}


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

Reply
0 Kudos
pamiller21
Enthusiast
Enthusiast
Jump to solution

Yes the datastores have a tag of on them, how do I extend the where for that?

Reply
0 Kudos
LucD
Leadership
Leadership
Jump to solution

Assuming that Tag name is 'ColdData', you could do

$ds = Get-Datacenter -Name $dcName | Get-Datastore |

  where {$_.Type -eq 'VMFS' -and

         $_.ExtensionData.Summary.MultipleHostAccess -and

         (Get-TagAssignment -Entity $_).Tag.Name -ne 'ColdData'}


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

pamiller21
Enthusiast
Enthusiast
Jump to solution

Very sorry seems it is working to eliminate the extra datastores, but now is it showing the Percentage as this ∞

When I run the script manually I do see an error: Cannot find path '/root/report.html' because it does not exist.

I assume this is referring to the last line of the script: Invoke-Item -Path .\report.html

but I don't understand that line to begin with 😕

Reply
0 Kudos
LucD
Leadership
Leadership
Jump to solution

Are you running this on a non-Windows OS?

Did you make sure that the environment is configured to use UTF-8 (without BOM)?

Which PS version?


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

Reply
0 Kudos
pamiller21
Enthusiast
Enthusiast
Jump to solution

I am running it on centos 8 with the newest PS that I know of:

PowerCLI Version

----------------

   VMware PowerCLI 12.0.0 build 15947286

---------------

Component Versions

---------------

   VMware Common PowerCLI Component 12.0 build 15939652

   VMware Cis Core PowerCLI Component PowerCLI Component 12.0 build 15939657

   VMware VimAutomation VICore Commands PowerCLI Component PowerCLI Component 12.0 build 15939655

I checked and this worked until I updated the script with the tag exclusions tho.

Reply
0 Kudos
LucD
Leadership
Leadership
Jump to solution

Can you use the Linux path separator ('/') instead of the Windows one ('\')?

I assume that you run this on a CentOS with a Desktop which has a registered app for opening HTML files?


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

Reply
0 Kudos
pamiller21
Enthusiast
Enthusiast
Jump to solution

Oh very sorry I just commented out one too many lines from the bad code.  Thank you again, you are a life saver.

Reply
0 Kudos