Functions/Get-ePoGroup.ps1

Function Get-ePoGroup 
{
    <#
        .SYNOPSIS
            Gets ePoGroup information using the ePo API.
         
        .DESCRIPTION
            Sends the command specified to the McAfee EPO server. Connect-ePoServer has to be run first,
            as this function uses the epoServer global variable created by that functions connection to the server. Uses the Invoke-ePoCommand
         
        .PARAMETER Filter
            Search text, wildcards are not supported. Defaults to all groups.
             
        .EXAMPLE
            $ePoGroups = Get-ePoGroup
            $CurrentPC
         
            Retruns the output of the system.findGroups API command and stores the results in a variable.
             
        .EXAMPLE
            $FoundSystems = Get-ePoGroup -Filter "Admin"
             
            Returns an object of the results of the system.findGroups search for groups with Admin in their names.
             
        .NOTES
            Requires Connect-ePoServer to have been run first. All output is returned as a string currently, still looking
            into ways to convert it to an object.
            Added support for Whatif
             
    #>

    [CmdletBinding(SupportsShouldProcess=$true)]
    param
    (
        [Parameter(Mandatory=$False,
        ValueFromPipeline=$True, ValueFromPipelinebyPropertyName=$true)]
        [string]$Filter = " "
    )
    Begin
    {
        If(!($epoServer))
        {
            Write-Warning "Connection to ePoServer not found. Please run Connect-ePoServer first."
            break
        }  
    }
    Process 
    {
        If($Filter)
        {
            $results = Invoke-ePoCommand -Command "system.findGroups" -Parameters "searchText=$($Filter)"
        }
        else
        {
            $results = Invoke-ePoCommand -Command "system.findGroups"
        }
        If($PSCmdlet.ShouldProcess("$Filter","Creating output object for epogroups found using filter"))
        { 
            $Groups = @()
            ForEach($Group in $results.result.list.element)
            {
       
                $props = @{GroupName = ($Group.GroupEPO.GroupPath)
                            GroupID = ($Group.GroupEPO.GroupID)
                }
                $Groups += New-Object -TypeName PSObject -Property $props
            }
            $Groups
        }
    }
    End{}
}