SecretsManagementExtension/SecretsManagementExtension.psm1
# Licensed under the MIT License. function Get-Secret { param ( [string]$Name, [hashtable]$AdditionalParameters ) $where = $AdditionalParameters.secretserveruri $ws = New-WebServiceProxy -uri $where -Credential $AdditionalParameters.secretservercredential #-ErrorAction SilentlyContinue $wsResult = $ws.GetSecret([int]$name, $false, $null) [PSCredential]::new($wsResult.Secret.Items[1].value.ToString(), ($wsResult.Secret.Items[2].value.ToString()|ConvertTo-SecureString -AsPlainText -Force)) } function set-secret { param ( [string] $Name, [object] $Secret, [hashtable] $AdditionalParameters ) $where = $AdditionalParameters.secretserveruri $cred= $AdditionalParameters.secretservercredential $secretserverfolder=$AdditionalParameters.secretserverfolderid if($secretserverfolder -eq $null){ $secretserverfolder=44 } $domain=$Name $templatename=$AdditionalParameters.secretservertemplate if($templatename -eq $null){ $templatename= "Windows Account" } if($Secret -eq $null){ throw "Secret can not be null." } elseif($secret -is [string]){ throw "String is currently not supported" } elseif($secret -is [hashtable]){ throw "String is currently not supported" } elseif ($secret -is [PSCredential]){ $username = $Secret.username $password = $secret.GetNetworkCredential().password } $ws = New-WebServiceProxy -uri $where -Credential $cred # Get Template $template = $ws.GetSecretTemplates().SecretTemplates | Where {$_.Name -eq $templateName} # Set fields info $secretName = $domain + "-" + $UserName $secretItemFields = (($template.Fields | Where {$_.DisplayName -eq "Machine"}).Id, ($template.Fields | Where {$_.DisplayName -eq "Username"}).Id, ($template.Fields | Where {$_.DisplayName -eq "Password"}).Id, ($template.Fields | Where {$_.DisplayName -eq "Notes"}).Id) $secretItemValues=($domain,$UserName,$password, "") $folderId = $secretserverfolder # Add secret to secretserver. $addResult = $ws.AddSecret($template.Id, $secretName, $secretItemFields, $secretItemValues, $folderId) if($addResult.Errors.Count -gt 0){ return $false }else{ return $true } } function Remove-Secret { param ( [string] $Name, [hashtable] $AdditionalParameters ) throw "Not implemented" } function Get-SecretInfo { param( [string] $filter, [hashtable] $AdditionalParameters ) if ([string]::IsNullOrEmpty($filter)) { $filter = "*" } $where = $AdditionalParameters.secretserveruri $ws = New-WebServiceProxy -uri $where -Credential $AdditionalParameters.secretservercredential # -ErrorAction SilentlyContinue $hits=$ws.SearchSecrets($filter,$null,$null) $result=@() foreach($hit in $hits.SecretSummaries){ $result+= ([pscustomobject] @{ Name = $($hit.secretid.tostring()) Value = $($hit.secretName.ToString()) }) } $result } |