Functions/Find-ePoSystem.ps1
Function Find-ePoSystem { <# .SYNOPSIS Finds a system 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 The search string to use for finding a system. Defaults to a space, which returns all systems. .EXAMPLE $CurrentPC = Find-ePoSystem -Filter $env:computername $CurrentPC Retruns the output of the system.find API command with a search paramter for the current computer. .EXAMPLE $FoundSystems = Find-ePoSystem -Filter "lt" Returns an object of the results of the system.find search for systems with lt in their names. .EXAMPLE $AllSystems = Find-ePoSystem -Verbose Returns an object of the results of the system.find search for all systems. .NOTES Added logic to determine the Percent of disk space left on each system. TODO: Add 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 { Write-Verbose "Sending system.find command to ePo API with parameter searchText=$($Filter)" $results = Invoke-ePoCommand -Command "system.find" -Parameters "searchText=$($Filter)" If($PSCmdlet.ShouldProcess("$Filter","Creating output object for system.find command results found using filter")) { $FoundSystems = @() ForEach($Computer in $results.result.list.row) { Write-Verbose "Getting properties for $($Computer | Select -ExpandProperty EPOComputerProperties.ComputerName)" $TotalSpace = $Computer | Select -ExpandProperty EPOComputerProperties.TotalDiskSpace If($TotalSpace -ne 0) { $PercentDiskSpaceFree = ([MATH]::Round(($Computer | Select -ExpandProperty EPOComputerProperties.FreeDiskSpace) / ($Computer | Select -ExpandProperty EPOComputerProperties.TotalDiskSpace), 3)) * 100 } else { $PercentDiskSpaceFree = 0 } $props = @{ComputerName = ($Computer | Select -ExpandProperty EPOComputerProperties.ComputerName) ADDescription = ($Computer | Select -ExpandProperty EPOComputerProperties.Description) SystemDescription = ($Computer | Select -ExpandProperty EPOComputerProperties.SystemDescription) UserName = ($Computer | Select -ExpandProperty EPOComputerProperties.UserName) TotalPhysicalMemory = ($Computer | Select -ExpandProperty EPOComputerProperties.TotalPhysicalMemory) FreeMemory = ($Computer | Select -ExpandProperty EPOComputerProperties.FreeMemory) FreeDiskSpace = ($Computer | Select -ExpandProperty EPOComputerProperties.FreeDiskSpace) TotalDiskSpace = ($Computer | Select -ExpandProperty EPOComputerProperties.TotalDiskSpace) PercentDiskSpaceFree = $PercentDiskSpaceFree Tags = ($Computer | Select -ExpandProperty EPOLeafNode.Tags) LastUpdate = ($Computer | Select -ExpandProperty EPOLeafNode.LastUpdate) AgentVersion = ($Computer | Select -ExpandProperty EPOLeafNode.AgentVersion) AgentGUID = ($Computer | Select -ExpandProperty EPOLeafNode.AgentGUID) } $FoundSystems += New-Object -TypeName PSObject -Property $props } $FoundSystems } } End{} } |