Public/Get-DMvStore.ps1

function Get-DMvStore {
    <#
    .SYNOPSIS
        To Get Huawei Oceanstor Storage vStores configured
 
    .DESCRIPTION
        Function to request Huawei Oceanstor Storage vStores configured in the system
 
    .PARAMETER webSession
        Optional parameter to define the session to be use on the REST call. If not defined, the module's cached $script:CurrentOceanstorSession session will be used
 
    .INPUTS
        System.Management.Automation.PSCustomObject
 
        You can pipe an OceanStor session object to WebSession.
 
    .OUTPUTS
        OceanStorvStore
 
        Returns vStore objects.
 
    .EXAMPLE
 
        PS C:\> Get-DMvStore -webSession $session
 
        OR
 
        PS C:\> $vStores = Get-DMvStore
 
    .NOTES
        Filename: Get-DMvStore.ps1
 
    .LINK
    #>

    [Cmdletbinding()]
    [OutputType([System.Collections.ArrayList])]
    param(
        [Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
        [pscustomobject]$WebSession
    )

    if ($WebSession) {
        $session = $WebSession
    }
    else {
        $session = $script:CurrentOceanstorSession
    }

    $defaultDisplaySet = "Id", "Name", "Running Status", "SAN Free Capacity Quota", "NAS Free Capacity Quota"

    $displayPropertySet = New-Object System.Management.Automation.PSPropertySet(
        'DefaultDisplayPropertySet',
        [string[]]$defaultDisplaySet
    )

    $standardMembers = [System.Management.Automation.PSMemberInfo[]]@($displayPropertySet)

    $response = Invoke-DeviceManager -WebSession $session -Method "GET" -Resource "vstore" | Select-DMResponseData
    $vStores = New-Object System.Collections.ArrayList

    foreach ($tvstore in $response) {
        $vStore = [OceanStorvStore]::new($tvstore, $session)
        [void]$vStores.Add($vStore)
    }

    $vStores | ForEach-Object {
        $_ | Add-Member MemberSet PSStandardMembers $standardMembers -Force
    }

    $result = $vStores

    return $result
}