Public/Get-PWSHYBKPIVStatus.ps1

function Get-PWSHYBKPIVStatus {
    <#
    .SYNOPSIS
        Reads the PIV application status from a locally attached YubiKey.
    .DESCRIPTION
        Wraps "yubico-piv-tool.exe --action status". Read-only - does not support -WhatIf since
        it makes no changes. Accepts the "status" action's config-declared options
        (-Reader, -ToolVerbose) as dynamic parameters built from Config\Posh-YBKPIV.json, so a JSON
        edit that adds or changes options for this action is picked up automatically.
    .PARAMETER Reader
        Name of the smart card reader to target, when more than one is attached. If omitted,
        yubico-piv-tool.exe uses its own default reader selection.
    .PARAMETER ToolVerbose
        Verbosity level (integer) to pass to yubico-piv-tool.exe's own --verbose flag. Named
        ToolVerbose rather than Verbose to avoid colliding with PowerShell's built-in -Verbose
        common parameter.
    .INPUTS
        None. This cmdlet does not accept pipeline input.
    .OUTPUTS
        String[]. yubico-piv-tool.exe's raw status output, one line per array element.
    .NOTES
        -Reader and -ToolVerbose are declared dynamically from Config\Posh-YBKPIV.json and
        therefore do not appear in Get-Help's PARAMETERS/SYNTAX sections. Run
        `Get-Command Get-PWSHYBKPIVStatus -Syntax` for the authoritative, current parameter list.
    .EXAMPLE
        Get-PWSHYBKPIVStatus
        Returns the PIV application status of the attached YubiKey.
    .EXAMPLE
        Get-PWSHYBKPIVStatus -Reader 'Yubico YubiKey'
        Returns status from the YubiKey matching the given reader name, when more than one is attached.
    .LINK
        https://developers.yubico.com/yubico-piv-tool/Actions/
    .LINK
        Get-PWSHYBKPIVVersion
    #>

    [CmdletBinding()]
    [OutputType([string[]])]
    param()

    DynamicParam {
        $dynamicConfig = Read-PWSHYBKPIVConfigFile
        Get-PWSHYBKPIVActionParameter -Action 'status' -CmdletWrapping $dynamicConfig.cmdletWrapping
    }

    begin {
        $config = Read-PWSHYBKPIVConfigFile
        Write-PWSHYBKPIVLog -Config $config -Level Debug -CmdletName $MyInvocation.MyCommand.Name `
            -Message 'Cmdlet invoked' -BoundParameters $PSBoundParameters

        $architecture = Resolve-PWSHYBKPIVArchitecture -Architecture $config.installation.architecture
        $exePath = Get-PWSHYBKPIVInstallPath -Installation $config.installation -Architecture $architecture
        if (-not (Test-Path -Path $exePath -PathType Leaf)) {
            throw "yubico-piv-tool.exe was not found at '$exePath'. Run Install-PWSHYBKPIVTool first."
        }
    }

    end {
        try {
            $result = Invoke-PWSHYBKPIVTool -ExePath $exePath -Action 'status' `
                -CmdletWrapping $config.cmdletWrapping -BoundParameters $PSBoundParameters
            Write-PWSHYBKPIVLog -Config $config -Level Information -CmdletName $MyInvocation.MyCommand.Name `
                -Message 'Status read successfully'
            $result.Output
        } catch {
            Write-PWSHYBKPIVLog -Config $config -Level Error -CmdletName $MyInvocation.MyCommand.Name -Message "Failed: $_"
            throw
        }
    }
}