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 } } } |