functions/Get-JS7FileTransferItem.ps1

function Get-JS7FileTransferItem
{
<#
.SYNOPSIS
Returns the XML representation of a file transfer configuration managed with the JOC Cockpit inventory
 
.DESCRIPTION
A file transfer configuration is returned from the JOC Cockpit inventory
 
The following REST Web Service API resources are used:
 
* /xmleditor/read
 
.PARAMETER Name
Specifies the name of the file transfer configuration in the JOC Cockpit inventory.
 
.OUTPUTS
This cmdlet returns the XML representation of a file transfer inventory object.
 
.EXAMPLE
$xml = Get-JS7FileTransferItem
 
Returns the list of available file transfer configurations.
 
.EXAMPLE
$xml = Get-JS7FileTransferItem -Name primaryAgent
 
Returns the XML object of the given file transfer configuration.
 
.LINK
about_JS7
 
#>

[cmdletbinding()]
[OutputType([Hashtable])]
[OutputType([XML])]
param
(
    [Parameter(Mandatory=$False,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True)]
    [string] $Name
)
    Begin
    {
        Approve-JS7Command $MyInvocation.MyCommand
        $stopWatch = Start-JS7StopWatch
    }

    Process
    {
        Write-Debug ".. $($MyInvocation.MyCommand.Name): Name = $Name"
    }

    End
    {
        $body = New-Object PSObject
        Add-Member -Membertype NoteProperty -Name 'controllerId' -value $script:jsWebService.ControllerId -InputObject $body
        Add-Member -Membertype NoteProperty -Name 'objectType' -value 'YADE' -InputObject $body

        [string] $requestBody = $body | ConvertTo-Json -Depth 100
        $response = Invoke-JS7WebRequest -Path '/xmleditor/read' -Body $requestBody

        if ( $response.StatusCode -eq 200 )
        {
            $fileTransferItems = ( $response.Content | ConvertFrom-Json ).configurations
        } else {
            throw ( $response | Format-List -Force | Out-String )
        }

        if ( $Name )
        {
            $found = $False
            foreach( $fileTransferItem in $fileTransferItems )
            {
                if ( $fileTransferItem.name -eq $Name )
                {
                    $found = $True
                    break
                }
            }

            if ( $found )
            {
                Write-Verbose ".. $($MyInvocation.MyCommand.Name): File Transfer Item found: $Name"

                $body = New-Object PSObject
                Add-Member -Membertype NoteProperty -Name 'controllerId' -value $script:jsWebService.ControllerId -InputObject $body
                Add-Member -Membertype NoteProperty -Name 'objectType' -value 'YADE' -InputObject $body
                Add-Member -Membertype NoteProperty -Name 'id' -value $fileTransferItem.id -InputObject $body

                [string] $requestBody = $body | ConvertTo-Json -Depth 100
                $response = Invoke-JS7WebRequest -Path '/xmleditor/read' -Body $requestBody

                if ( $response.StatusCode -eq 200 )
                {
                    $fileTransferItem = ( $response.Content | ConvertFrom-Json ).configuration
                } else {
                    throw ( $response | Format-List -Force | Out-String )
                }

                [xml] $fileTransferItem.configuration
            } else {
                Write-Verbose ".. $($MyInvocation.MyCommand.Name): No File Transfer Item found for name: $Name"
            }
        } else {
            $fileTransferItems
        }

        Trace-JS7StopWatch -CommandName $MyInvocation.MyCommand.Name -StopWatch $stopWatch
        Update-JS7Session
    }
}