functions/secrets/Get-TssSecretState.ps1
|
function Get-TssSecretState { <# .SYNOPSIS Get details on state of the Secret .DESCRIPTION Get details on state (requires checkout, restricted actions, etc) of the Secret .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Get-TssSecretState -TssSession $session -Id 42 Add minimum example for each parameter .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Get-TssSecretState -TssSession $session -Id 42 -Flags Returns the heartbeat status, password change state and password compliance of secret 42 .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Get-TssSecretState -TssSession $session -Id 42 -FlagsV2 Returns the state flags of secret 42 from the v2 endpoint, where PasswordChangeState can also be PreRunValidationFailed .PARAMETER Flags Return the state flags (heartbeat status, password change state, password compliance) instead of the state details .PARAMETER FlagsV2 Return the state flags from the v2 endpoint, which adds PreRunValidationFailed to PasswordChangeState .LINK https://thycotic-ps.github.io/thycotic.secretserver/commands/secrets/Get-TssSecretState .LINK https://github.com/thycotic-ps/thycotic.secretserver/blob/main/src/functions/secrets/Get-TssSecretState.ps1 .NOTES Requires TssSession object returned by New-TssSession #> [CmdletBinding(DefaultParameterSetName = 'state')] [OutputType('Thycotic.PowerShell.Secrets.DetailState')] [OutputType('Thycotic.PowerShell.Secrets.StateFlags', ParameterSetName = ('flags', 'flagsV2'))] param ( # TssSession object created by New-TssSession for authentication [Parameter(Mandatory, ValueFromPipeline, Position = 0)] [Thycotic.PowerShell.Authentication.Session] $TssSession, # Secret ID [Parameter(Mandatory, ValueFromPipelineByPropertyName, Position = 1)] [Alias('SecretId')] [int[]] $Id, [Parameter(Mandatory, ParameterSetName = 'flags')] [switch] $Flags, [Parameter(Mandatory, ParameterSetName = 'flagsV2')] [switch] $FlagsV2 ) begin { $tssParams = $PSBoundParameters $invokeParams = . $GetInvokeApiParams $TssSession } process { Get-TssInvocation $PSCmdlet.MyInvocation if ($tssParams.ContainsKey('TssSession') -and $TssSession.IsValidSession()) { Compare-TssVersion $TssSession '10.9.000000' $PSCmdlet.MyInvocation foreach ($secret in $Id) { $restResponse = $null if ($PSCmdlet.ParameterSetName -ne 'state') { switch ($PSCmdlet.ParameterSetName) { 'flagsV2' { $uri = ($TssSession.ApiUrl -replace '/api/v1$','/api/v2'), 'secrets', $secret, 'state', 'flags' -join '/' } default { $uri = $TssSession.ApiUrl, 'secrets', $secret, 'state', 'flags' -join '/' } } $invokeParams.Uri = $uri $invokeParams.Method = 'GET' Write-Verbose "Performing the operation $($invokeParams.Method) $($invokeParams.Uri)" try { $apiResponse = Invoke-TssApi @invokeParams $restResponse = . $ProcessResponse $apiResponse } catch { Write-Warning "Issue getting state flags for secret [$secret]" $err = $_ . $ErrorHandling $err } if ($restResponse) { [Thycotic.PowerShell.Secrets.StateFlags](. $FilterTssResponse $restResponse ([Thycotic.PowerShell.Secrets.StateFlags])) } continue } $uri = $TssSession.ApiUrl, 'secrets', $secret, 'state' -join '/' $invokeParams.Uri = $uri $invokeParams.Method = 'GET' Write-Verbose "Performing the operation $($invokeParams.Method) $($invokeParams.Uri)" try { $apiResponse = Invoke-TssApi @invokeParams $restResponse = . $ProcessResponse $apiResponse } catch { Write-Warning "Issue getting state for secret [$secret]" $err = $_ . $ErrorHandling $err } if ($restResponse) { [Thycotic.PowerShell.Secrets.DetailState](. $FilterTssResponse $restResponse ([Thycotic.PowerShell.Secrets.DetailState])) } } } else { Write-Warning 'No valid session found' } } } |