Public/Export-AvdWorkbook.ps1

function Export-AvdWorkbook {
    <#
    .SYNOPSIS
    Exports the provided workbook
    .DESCRIPTION
    Exports the workbook to a JSON formatted file on the provided file location
    .PARAMETER WorkbookName
    Enter the workbook name(s) to export
    .PARAMETER Id
    Enter the workbook resource ID
    .PARAMETER ExportPath
    The path to export the JSON files to
    .EXAMPLE
    Get-AvdWorkbook -WorkbookName "Workbook 1" | Export-AvdWorkbook
    .EXAMPLE
    Export-AvdWorkbook -WorkbookName @("Workbook 1", "Workbook") -ExportPath .\
    #>

    [CmdletBinding(DefaultParameterSetName = "Name")]
    param (
        [Parameter(ParameterSetName = "Name")]
        [ValidateNotNullOrEmpty()]
        [array]$WorkbookName,

        [Parameter(ParameterSetName = "ResourceId", ValueFromPipeline, ValueFromPipelineByPropertyName)]
        [ValidateNotNullOrEmpty()]
        [string]$Id,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]$ExportPath = ".\"
    )
    Begin {
        Write-Verbose "Start requesting workbooks in $global:subscriptionId for export"
        AuthenticationCheck
    }
    Process {
        try {
            switch ($PsCmdlet.ParameterSetName) {
                Name {
                    $workbooks = Get-AvdWorkbook -WorkbookName $WorkbookName -ShowContent
                }
                ResourceId {
                    Write-Verbose "ID is $Id"
                    $workbooks = Get-AvdWorkbook -Id $Id -ShowContent
                }
            }
            $workbooks | ForEach-Object {
                try {
                    $filePath = "{0}\{1}.json" -f $ExportPath, ($_.Properties.displayName).Replace(" ", "_")
                    Write-Verbose "Exporting workbook to $filePath"
                    $_.Properties.serializedData | Out-File -FilePath $filePath
                }
                catch [System.Exception] {
                    Write-Error -Message "An error occurred while constructing parameter input for access token retrieval. Error message: $($PSItem.Exception.Message)"
                }
            }
        }
        catch [System.Exception] {
            Write-Error -Message "An error occurred while constructing parameter input for access token retrieval. Error message: $($PSItem.Exception.Message)"
        }
    }
}