Watchlist/Backup-Watchlist.psm1

# Backup-Watchlist.psm1
Function Backup-Watchlist {
    [alias("Backup-Watchlists")]
    [alias("Export-Watchlist")]
    [alias("Export-Watchlists")]
    param(
            [Parameter(mandatory=$False)]
            [string]
        $Instance,

            [Parameter(mandatory=$False, Position=0)]
            [ValidateScript({
                if(($_ | Test-Path) ){
                    Write-Warning "Output file $_ already exists and will be overwritten."
                }
                if($_ | Test-Path -PathType Container){
                    throw "The Path argument must be a file. Folder paths are not allowed."
                }
                return $true
            })]
            [System.IO.FileInfo]
        $OutputPath,

            [Parameter(mandatory=$False)]
            [switch]
        $NoActions
    )
    if ($NoActions) {
        $Watchlists = Get-Watchlist -Instance $Instance -NoActions
    }
    else {
        $Watchlists = Get-Watchlist -Instance $Instance
    }

    if (-not $OutputPath) {
        if (-not $Instance) {
            try {
                $Instance = Get-CurrentInstance
            }
            catch {
                throw $_
            }
        }
        $OutputPath = ".\$Instance-watchlist-backup.txt"
    }

    $Watchlists | Export-Clixml $OutputPath
}