Functions/Instances/Watch-CdsOperation.ps1

<#
    .SYNOPSIS
    Monitor operation completion.
#>

function Watch-CdsOperation {
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory, ValueFromPipeline)]
        [Guid]
        $OperationId
    )
    begin {   
        $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); 
        Trace-CdsFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); 
        Assert-CdsIsAdmin;
    }    
    process {
        
        # TODO : Refactor with Microsoft.PowerApps.Administration.PowerShell

        # $credentials = $Global:CdsContext.Credentials;
        # $apiUrl = $Global:CdsContext.AdminApiUrl;
        #
        # $operation = Get-CrmOperationStatus -ApiUrl $apiUrl -Credential $credentials -Id $OperationId;
        # while($operation.Status -eq "Running")
        # {
        # Start-Sleep -Seconds 10;
        # $operation = Get-CrmOperationStatus -ApiUrl $apiUrl -Credential $credentials -Id $OperationId;
        # $stageData = $operation.Information[2].Description | ConvertFrom-Json;
        # Write-HostAndLog -Message "Checking operation $OperationId status => $($operation.Status)";
        # }

    }
    end {
        $StopWatch.Stop();
        Trace-CdsFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch;
    }    
}

Export-ModuleMember -Function Watch-CdsOperation -Alias *;