Private/Get-PatSecretManagementAvailable.ps1
|
function Get-PatSecretManagementAvailable { <# .SYNOPSIS Checks if SecretManagement module is available and configured. .DESCRIPTION Internal helper function that determines whether the Microsoft.PowerShell.SecretManagement module is installed and at least one secret vault is registered. Used to determine whether tokens can be stored securely. .OUTPUTS Boolean Returns $true if SecretManagement is available with a registered vault, $false otherwise. .EXAMPLE if (Get-PatSecretManagementAvailable) { # Store token in vault } #> [CmdletBinding()] [OutputType([bool])] param () try { # Check if module is available $module = Get-Module -ListAvailable -Name 'Microsoft.PowerShell.SecretManagement' -ErrorAction SilentlyContinue if (-not $module) { Write-Debug "SecretManagement module not installed" return $false } # Import module if not already loaded if (-not (Get-Module -Name 'Microsoft.PowerShell.SecretManagement')) { Import-Module -Name 'Microsoft.PowerShell.SecretManagement' -ErrorAction Stop } # Check if any vault is registered $vaults = Get-SecretVault -ErrorAction SilentlyContinue if (-not $vaults -or $vaults.Count -eq 0) { Write-Debug "No secret vaults registered" return $false } Write-Debug "SecretManagement available with $($vaults.Count) vault(s)" return $true } catch { Write-Debug "SecretManagement check failed: $($_.Exception.Message)" return $false } } |