functions/Get-PasswordStatePasswordHistory.ps1
function Get-PasswordStatePasswordHistory { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '', Justification = 'Not a password just an ID')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidGlobalVars', '', Justification = 'Needed for backward compatability')] [CmdletBinding()] [OutputType('System.Object[]')] param ( [parameter(ValueFromPipelineByPropertyName, Position = 0, Mandatory = $true)][int32]$PasswordID, [parameter(ValueFromPipelineByPropertyName, Position = 1, Mandatory = $false)][string]$reason, [parameter(ValueFromPipelineByPropertyName, Position = 2)][switch]$PreventAuditing ) begin { $output = @() } process { If ($Reason) { $headerreason = @{"Reason" = "$reason" } $parms = @{ExtraParams = @{"Headers" = $headerreason } } } Else { $parms = @{ } } $uri = "/api/passwordhistory/$($PasswordID)" Switch ($PreventAuditing) { $True { $uri += "&PreventAuditing=true" } Default { } } try { $results = Get-PasswordStateResource -uri $uri @parms -ErrorAction stop Foreach ($result in $results) { $result = [PasswordHistory]$result $result.Password = [EncryptedPassword]$result.Password $output += $result } } Catch [System.Net.WebException] { throw ($_.ErrorDetails.Message | ConvertFrom-Json).errors.phrase } } end { switch ($global:PasswordStateShowPasswordsPlainText) { True { $output.DecryptPassword() } } Return $output } } |