Private/Invoke-W365CloudPCConfirmedAction.ps1

function Invoke-W365CloudPCConfirmedAction {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [object]$CloudPC,

        [Parameter(Mandatory)]
        [string]$ActionName,

        [string]$TargetType = 'Cloud PC',

        [Parameter(Mandatory)]
        [scriptblock]$PreviewScript,

        [Parameter(Mandatory)]
        [scriptblock]$SubmitScript,

        [hashtable]$Context = @{},

        [switch]$OfferRemoteActionHistory
    )

    begin { }

    process {
        Clear-Host
        Write-Host ''
        Write-Host "$ActionName $TargetType" -ForegroundColor Cyan
        Write-Host ("Target: {0}" -f $CloudPC.Name)
        if ($CloudPC.AssignedUserUpn) {
            Write-Host ("User: {0}" -f $CloudPC.AssignedUserUpn)
        }
        Write-Host ''

        $choice = Read-W365CliChoice -Prompt 'Choose action' -Choices @(
            'Preview only with -WhatIf',
            'Submit now',
            'Cancel'
        ) -AllowBack

        switch ($choice) {
            0 {
                & $PreviewScript $CloudPC $Context
            }
            1 {
                $confirmChoice = Read-W365CliChoice -Prompt "Submit $ActionName now?" -Choices @(
                    'Confirm',
                    'Cancel'
                ) -AllowBack

                if ($confirmChoice -ne 0) {
                    Write-Warning "$ActionName cancelled."
                    return
                }

                & $SubmitScript $CloudPC $Context

                if ($OfferRemoteActionHistory) {
                    $historyChoice = Read-W365CliChoice -Prompt 'Check remote action history now?' -Choices @(
                        'Yes',
                        'No'
                    ) -AllowBack

                    if ($historyChoice -eq 0) {
                        Show-W365CloudPCRemoteActionHistory -CloudPC $CloudPC
                    }
                }
            }
            default {
                Write-Host "$ActionName cancelled."
            }
        }

        Write-Host ''
        Write-Host 'Press any key to continue...' -ForegroundColor DarkGray
        [Console]::ReadKey($true) | Out-Null
    }

    end { }
}