urlshrtPS.psm1

function Add-ShortUrl {
    [CmdletBinding()]
        param (
            [Parameter(Mandatory,Position=0)]
            [ValidateScript({[Uri]::CheckHostName($_) -eq 'Dns'})]
            $Zone,
            [Parameter(Mandatory,Position=1)]
            $Name,
            [Parameter(Mandatory,Position=2)]
            [ValidateScript({[Uri]::IsWellFormedUriString($_,[UriKind]::Absolute)})]
            $Url,
            [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
            [ValidateRange(10000,99999)]
            [int]$Account,
            [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
            [System.Security.SecureString]$AccessToken
            )
    
        $record = Get-ZoneRecord -Zone $Zone -Name $Name -Account $Account -AccessToken $AccessToken
        if ($record) {
            Write-Error "Record with name $Name and type URL already exists in zone $Zone"
            return
        }
        Add-ZoneRecord -Zone $Zone -RecordType URL -Name $Name -Content $Url -Account $Account -AccessToken $AccessToken
}

function Remove-ShortUrl{
    [CmdletBinding()]
        param (
            [Parameter(Mandatory,Position=0)]
            [ValidateScript({[Uri]::CheckHostName($_) -eq 'Dns'})]
            $Zone,
            [Parameter(Mandatory,Position=1)]
            $Name,
            [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
            [ValidateRange(10000,99999)]
            [int]$Account,
            [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
            [System.Security.SecureString]$AccessToken
            )
    
        $record = Get-ZoneRecord -Zone $Zone -Name $Name -Account $Account -AccessToken $AccessToken
        if (-not($record)) {
            Write-Output "Record with name $Name and type URL does not exist in zone $Zone"
            return
        }
        Remove-ZoneRecord -Zone $Zone -Id $record.id -Account $Account -AccessToken $AccessToken
}