Public/Pam/PamProviders/New-DSPamProvider.ps1
function New-DSPamProvider { <# .SYNOPSIS .DESCRIPTION .EXAMPLE .NOTES This is the first iteration of this implementation. We are trying a few approaches to better hide the complexity inherent with our backend. The username should NOT be mandatory .LINK #> [CmdletBinding()] param( [guid]$ID, [ValidateNotNullOrEmpty()] [string]$name, [ValidateSet('LocalUser', 'DomainUser', 'SqlServer')] [string]$credentialType, [ValidateNotNullOrEmpty()] [string]$username ) BEGIN { Write-Verbose '[New-DSPamProvider] Beginning...' $URI = "$Script:DSBaseURI/api/pam/providers" if ([string]::IsNullOrWhiteSpace($Global:DSSessionToken)) { throw "Session does not seem authenticated, call New-DSSession." } } PROCESS { try { $credentialTypeValue = switch ( $credentialType ) { 'LocalUser' { 2; break } 'DomainUser' { 3; break } 'SqlServer' { 5; break } } $newProviderData = @{ ProviderID = $ID label = $name CredentialType = $credentialTypeValue Username = $username #TODO handle the enum ProtectedDataType = 1 } $params = @{ Uri = $URI Method = 'POST' Body = $newProviderData | ConvertTo-Json } Write-Verbose "[New-DSPamProvider] About to call with ${params.Uri}" $response = Invoke-DS @params return $response } catch { $exc = $_.Exception If ([System.Management.Automation.ActionPreference]::Break -ne $DebugPreference) { Write-Debug "[Exception] $exc" } } } END { If ($response.isSuccess) { Write-Verbose '[New-DSPamProviders] Completed Successfully.' } else { Write-Verbose '[New-DSPamProviders] Ended with errors...' } } } |