<#
.SYNOPSIS
    Usage report for VMware datastores.
.DESCRIPTION
    Usage report for VMware datastores.
.NOTES
    Requires VMware PowerCLI module.
    Requires connection to vCenter.
.EXAMPLE
    Get-ITDVMwareDatastoreReport
    Retrieves a report of all datastores in the vCenter.
.EXAMPLE
    Get-ITDVMwareDatastoreReport -Name "*78*"
    Retrieves a report of all datastores in the vCenter that match the name pattern "*78*".
.PARAMETER Name
    The name of the datastore to retrieve. If not specified, all datastores will be returned.
    Supports wildcards.
#>

function Get-ITDVMwareDatastoreReport {
    [CmdletBinding()]
    param (
        [string]
        $Name
    )
    
    begin {
        
    }
    
    process {
        if ($PSBoundParameters.ContainsKey('Name')) {
            $AllDatastores = Get-Datastore -Name $Name
        }
        else {
            $AllDatastores = Get-Datastore
        }
     
        foreach ($Datastore in $AllDatastores) {
            $FreeSpaceGB = $Datastore.FreeSpaceGB
            $CapacityGB = $Datastore.CapacityGB
            $UsedSpaceGB = $CapacityGB - $FreeSpaceGB
            $obj = [PSCustomObject]@{
                Name        = $Datastore.Name;
                Datacenter  = $Datastore.Datacenter.Name
                FreeSpaceGB = $FreeSpaceGB;
                UsedSpaceGB = ($CapacityGB - $FreeSpaceGB);
                CapacityGB  = $CapacityGB;
                FreePercent = [math]::round($Datastore.FreeSpaceGB / $Datastore.CapacityGB * 100, 2);
            }
            #$null = $Result.Add($obj)
            Write-Output $obj 
        }
    }
    end {
        
    }
}