Public/SharePointandOneDrive/Get-SPOWeb.ps1

function Get-SPOWeb {

    param (
        [Parameter(Mandatory = $true, Position = 1)]
        [string]$UsernameString,
        [Parameter(Mandatory = $true, Position = 2)]
        [string]$Url,
        [Parameter(Mandatory = $true, Position = 3)]
        $PwdSecureString,
        [Parameter(Mandatory = $true, Position = 4)]
        $curUser,
        [Parameter(Mandatory = $true, Position = 5)]
        $Display
        
        
    )

    $errorActionPreference = 'Stop'

    # Connecting to particular personal site
    $clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
    $clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UsernameString, $PwdSecureString)
    $null = $clientContext.Load($clientContext.Web)
    $null = $clientContext.Load($clientContext.Site)
    $errorMessage = $null

    try {
        $null = $clientContext.ExecuteQuery()
    }
    Catch {
        if ($_.exception.Message -like "*(404)*" -or $_.exception.Message -like "*Not Found*"  ) {
            $errorMessage = "(404)NotFound"
        }
        else {
            $errorMessage = $_.exception.Message
        }
    }
    
    $null = Invoke-LoadMethod -Object $clientContext.Site -PropertyName "Usage"
    Try {
        $null = $clientContext.ExecuteQuery()
    }
    Catch {
        if ($_.exception.Message -like "*(404)*" -or $_.exception.Message -like "*Not Found*"  ) {
            $errorMessage = "(404)NotFound"
        }
        else {
            $errorMessage = $_.exception.Message
        }
    }
    Write-Verbose "----------------------"
    Write-Verbose "Current User: $curUser"
    if (-Not $clientContext.Site.Usage.StoragePercentageUsed -eq 0) {
        $storageAvailable = $clientContext.Site.Usage.Storage / $clientContext.Site.Usage.StoragePercentageUsed / 1GB 
        $storageUsed_GB = ([Math]::Round($clientContext.Site.Usage.Storage / 1GB, 2))
        $percentageUsed = ([decimal]::Round(($clientContext.Site.Usage.StoragePercentageUsed), 10))
        $BytesUsed = ($clientContext.Site.Usage.Storage)
    }

    if ($storageAvailable -ne $null) {
        Write-Verbose "Storage available: $storageAvailable GB"
        Write-Verbose "Storage: $(($clientContext.Site.Usage.Storage / 1GB))"
        Write-Verbose "Percentage used: $(([decimal]::Round(($clientContext.Site.Usage.StoragePercentageUsed), 2)))"
        Write-Verbose "Bytes Used: $BytesUsed"
    }
    else {
        Write-Verbose "Null"
    }
    Write-Verbose "----------------------"

    [PSCustomObject]@{
        SPOUser             = $curUser
        DisplayName         = $Display
        Url                 = $Url
        StorageAvailable_GB = $storageAvailable
        StorageUsed_GB      = $storageUsed_GB
        PercentageUsed      = $percentageUsed
        BytesUsed           = $BytesUsed
        Message             = $errorMessage
            
    } 

    $null = $clientContext.Dispose()
}