cmdlets/Add-PSBookmark.ps1

<#
 .Synopsis
   Add folder to bookmarks list.

 .Description
  Add folder to bookmarks list.

 .Parameter Name
  The bookmark name.

 .Parameter Path
  The Path to folder.

 .Example
   # Add bookmark with name.
   ./Add-PSBookmark [ ba ] BookmarkName (Opt)Directory

 .Example
   # Add bookmark from pipeline.
   $pwd | Add-PSBookmark -Name "ThisDirectory"
#>

function Add-PSBookmark () {
    Param (
        [Parameter(Position = 0, Mandatory = $true)]
        [Alias("Bookmark")]
        $Name,
        [Parameter(Position = 1, ValueFromPipeline  = $True)]
        [Alias("Path")]
        [string]$dir = $null
    )
    if ( [string]::IsNullOrWhitespace($dir) ) {
        $dir = (Get-Location).Path
    }

    $_marks = Import-PSBookmarks

    if( $_marks.ContainsKey("$Name") ){
        throw "Folder bookmark ''$Name'' already exist"
    }

    $_marks["$Name"] = $dir
    Save-PSBookmarks $_marks
    Write-Output ("Location '{1}' saved to bookmark '{0}'" -f $Name, $dir)     
}