Public/Get-midPointOrg.ps1

function Get-midPointOrg {
    <#
    .SYNOPSIS
    Gets midPoint orgs (organizational units).

    .DESCRIPTION
    Gets orgs by name, by OID, by an Axiom query filter, or all orgs.
    -Name returns nothing when no org has that name; -Oid stops with an error when the OID does not exist.
    The org's extension items are in the Extension property, by name without namespace
    ($org.Extension.costCenter); single values are unwrapped.

    .PARAMETER Name
    The exact org name.

    .PARAMETER Oid
    The org's OID.

    .PARAMETER Filter
    An Axiom query filter, e.g. 'name startsWith "OU "'.

    .PARAMETER All
    Returns all orgs.

    .PARAMETER MaxResults
    The maximum number of orgs returned by -Filter or -All.

    .EXAMPLE
    Get-midPointOrg 'Some Org'

    .EXAMPLE
    Get-midPointOrg -Filter 'name startsWith "OU "' | Select-Object Name, Identifier, Oid

    .EXAMPLE
    (Get-midPointOrg 'Some Org').Extension.costCenter
    #>

    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'All', Justification = 'Selects the parameter set.')]
    [CmdletBinding(DefaultParameterSetName = 'Name')]
    [OutputType('midPointTools.Org')]
    param(
        [Parameter(Mandatory, Position = 0, ParameterSetName = 'Name', ValueFromPipeline)]
        [string[]] $Name,

        [Parameter(Mandatory, ParameterSetName = 'Oid', ValueFromPipelineByPropertyName)]
        [string[]] $Oid,

        [Parameter(Mandatory, ParameterSetName = 'Filter')]
        [string] $Filter,

        [Parameter(Mandatory, ParameterSetName = 'All')]
        [switch] $All,

        [Parameter(ParameterSetName = 'Filter')]
        [Parameter(ParameterSetName = 'All')]
        [int] $MaxResults
    )

    process {
        switch ($PSCmdlet.ParameterSetName) {
            'Name' {
                foreach ($n in $Name) {
                    Find-midPointObject -Type orgs -Filter ('name = {0}' -f (ConvertTo-midPointAxiomString $n)) | ConvertTo-midPointOrgObject
                }
            }
            'Oid' {
                foreach ($o in $Oid) { Get-midPointObjectByOid -Type orgs -Oid $o | ConvertTo-midPointOrgObject }
            }
            'Filter' { Find-midPointObject -Type orgs -Filter $Filter -MaxResults $MaxResults | ConvertTo-midPointOrgObject }
            'All' { Find-midPointObject -Type orgs -MaxResults $MaxResults | ConvertTo-midPointOrgObject }
        }
    }
}