src/Get-EnvPathItem.ps1

#!/usr/bin/env pwsh
$ErrorActionPreference = "Stop"
Set-StrictMode -Version Latest


<#
.SYNOPSIS
    Gets the path entries of the environment variable `PATH` at the given environment variable scope.
.PARAMETER Process
    Gets the path entries of the environment variable `PATH` at the Process-level environment variable scope.
.PARAMETER User
    Gets the path entries of the environment variable `PATH` at the User-level environment variable scope.
.PARAMETER Machine
    Gets the path entries of the environment variable `PATH` at the Machine-level environment variable scope.
.PARAMETER Scope
    The scope of the environment variable from which the path entries will be retrieved.
.OUTPUTS
    string
.COMPONENT
    env
#>

function Get-EnvPathItem() {
    [CmdletBinding(DefaultParameterSetName = "ProcessScopeForValue")]
    param(
        [Parameter(Mandatory=$true, ParameterSetName="MachineScopeForValue", Position=0)]
        [switch] $Machine,

        [Parameter(Mandatory=$true, ParameterSetName="ProcessScopeForValue", Position=0)]
        [switch] $Process,

        [Parameter(Mandatory=$true, ParameterSetName="UserScopeForValue", Position=0)]
        [switch] $User,

        [Parameter(Mandatory=$true, ParameterSetName="ScopeValueForValue", Position=0)]
        [System.EnvironmentVariableTarget] $Scope
    )

    $new_args = $PSBoundParameters + @{Name="PATH"}
    Get-EnvVarPathItem @new_args
}