SecretManagement.VMware.CloudFoundation.Extension/public/Get-Secret.ps1
function Get-Secret { [CmdletBinding()] param ( [Parameter(ValueFromPipelineByPropertyName = $true)] [string] $Name, [string] $VaultName, [hashtable] $AdditionalParameters ) $server = Resolve-SecretVault -Server $AdditionalParameters.Server Test-SecretVault -VaultName $VaultName -AdditionalParameters $AdditionalParameters $resourceName = $Name $userName = $Name if ($name -match '\/') { $resourceName = $name.split('/')[0] $userName = $name.split('/')[-1] } $results = @() $uri = ('{0}/v1/credentials?resourceName={1}' -f $server, $resourcename) $results += (Invoke-RestMethod -Uri $uri -Headers $script:headers @script:irmSplat).elements $uri = ('{0}/v1/system/credentials/service' -f $server) $results += Invoke-RestMethod -Uri $uri -Headers $script:headers @script:irmSplat if (($results| Measure-Object).Count -ge 1) { $results = $results | Where-Object { $_.username -eq $userName } if ($null -ne $results) { $password = $null if ([string]::IsNullOrEmpty($results.password.length) -or $results.password.Length -gt 0) { $password = $results.password } elseif ([string]::IsNullOrEmpty($results.secret.length) -or $results.secret.Length -gt 0) { $password = $results.secret } if ($null -eq $password) { $password = (New-Object System.Security.SecureString) Write-Debug 'Password is empty' } else { $password = (ConvertTo-SecureString -String $password -AsPlainText -Force) } [System.Management.Automation.PSCredential]::new($results.userName, $password) } } } |