Private/Resolve-CompassPath.ps1

function Resolve-CompassPath {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [Object]$InputObject
    )

    $literalPath = if ($InputObject -is [System.Management.Automation.PathInfo]) {
        $InputObject.ProviderPath
    } elseif ($InputObject -is [System.IO.FileSystemInfo]) {
        $InputObject.FullName
    } elseif ($null -ne $InputObject.FullName) {
        $InputObject.FullName
    } else {
        [string]$InputObject
    }

    try {
        $resolved = (Resolve-Path -LiteralPath $literalPath -ErrorAction Stop).ProviderPath
        Write-Verbose "Resolved clipboard item '$literalPath' -> '$resolved'"
        return $resolved
    } catch {
        Write-Warning "Skipping missing clipboard item: $literalPath"
        return $null
    }
}