Functions/Base/Start-OIMMethod.ps1

Function Start-OIMMethod{
    [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = "object")]
    Param(
        [Parameter(
            ParameterSetName = "Object",
            ValueFromPipeline=$true,
            Mandatory=$true)]
            $Object,
        [Parameter(Mandatory=$true)]
            $MethodName,
            [Parameter(
                ParameterSetName = "ObjectSingle",
                Mandatory=$true)]
                $ObjectTable,

            [Parameter(
                ParameterSetName = "ObjectSingle",
                Mandatory=$true)]
                $ObjectKey,
        [array]$Parameters = @()

    )
    BEGIN {    }#begin

    PROCESS {
        $body = @{parameters = $Parameters }

        switch ($PSCmdlet.ParameterSetName) {

            'Object' {

                ForEach($xObjectkey in $Object.xObjectKey){

                    $xmlXObjectKey =     [xml] $xObjectkey
                    $URI = "$Script:BaseURI/api/entity/$($xmlXObjectKey.key.T)/$($xmlXObjectKey.key.P)/method/$methodname"

                    If($PSCmdlet.ShouldProcess($xmlXObjectKey , "Start-OIMMethod $MethodName")){
                        Invoke-OIMRestMethod -Uri $uri -Method put -Body $body  -WebSession $Script:WebSession | out-Null

                    }
                }
            }
            'ObjectSingle'{
                $URI = "$Script:BaseURI/api/entity/$ObjectTable/$ObjectKey/method/$methodname"

                If($PSCmdlet.ShouldProcess($xmlXObjectKey , "Start-OIMMethod $MethodName")){
                    Invoke-OIMRestMethod -Uri $uri -Method put -Body $body  -WebSession $Script:WebSession | out-Null

                }

            }

        }
    }
}