modules/credentials.psm1
# /api/v2/credentials function Get-PPDMcredentials { [CmdletBinding()] param( [Parameter(Mandatory = $false, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] [string]$ID, $PPDM_API_BaseUri = $Global:PPDM_API_BaseUri, $apiver = "/api/v2" ) begin { $Response = @() $METHOD = "GET" $Myself = ($MyInvocation.MyCommand.Name.Substring(8) -replace "_", "-").ToLower() # $response = Invoke-WebRequest -Method $Method -Uri $Global:PPDM_API_BaseUri/api/v0/$Myself -Headers $Global:PPDM_API_Headers } Process { switch ($PsCmdlet.ParameterSetName) { 'byID' { $URI = "/$myself/$ID" } default { $URI = "/$myself" } } $Parameters = @{ body = $body Uri = $Uri Method = $Method RequestMethod = 'Rest' PPDM_API_BaseUri = $PPDM_API_BaseUri apiver = $apiver Verbose = $PSBoundParameters['Verbose'] -eq $true } try { $Response += Invoke-PPDMapirequest @Parameters } catch { Get-PPDMWebException -ExceptionMessage $_ break } write-verbose ($response | Out-String) } end { switch ($PsCmdlet.ParameterSetName) { 'byID' { write-output $response } default { write-output $response.content } } } } # https://developer.dellemc.com/data-protection/powerprotect/data-manager/api/credentials-management/createcredential # POST /api/v2/credentials function New-PPDMcredentials { [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [string]$name, [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [ValidateSet('DATADOMAIN', 'POWERPROTECT', 'DBUSER', 'OS', 'STANDARD', 'VCENTER', 'KUBERNETES', 'SMISSERVER', 'CDR', 'SAPHANA_DB_USER', 'SAPHANA_SYSTEM_DB_USER', 'DDBOOST', 'RMAN')] [string]$type, [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true)] [pscredential]$credentials, [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true)] [ValidateSet('BASIC', 'CONFIG', 'TOKEN', 'USER_KEY')] [string]$authmethod, $PPDM_API_BaseUri = $Global:PPDM_API_BaseUri, $apiver = "/api/v2" ) begin { $Response = @() $METHOD = "POST" $Myself = ($MyInvocation.MyCommand.Name.Substring(8) -replace "_", "-").ToLower() # $response = Invoke-WebRequest -Method $Method -Uri $Global:PPDM_API_BaseUri/api/v0/$Myself -Headers $Global:PPDM_API_Headers } Process { switch ($PsCmdlet.ParameterSetName) { default { $URI = "/$myself" } } if (!$($Credentials)) { $username = Read-Host -Prompt "Please Enter New username" $SecurePassword = Read-Host -Prompt "Enter Password for user $username" -AsSecureString $Credentials = New-Object System.Management.Automation.PSCredential($username, $Securepassword) } $Body = @{ 'type' = $type 'name' = $name 'username' = $($Credentials.GetNetworkCredential()).username 'password' = $($Credentials.GetNetworkCredential()).password } if ($authmethod) { $Body.Add('method', $authmethod) } $body = $Body | ConvertTo-Json write-verbose ($body | out-string ) $Parameters = @{ body = $body Uri = $Uri Method = $Method RequestMethod = 'Rest' PPDM_API_BaseUri = $PPDM_API_BaseUri apiver = $apiver Verbose = $PSBoundParameters['Verbose'] -eq $true } try { $Response += Invoke-PPDMapirequest @Parameters } catch { Get-PPDMWebException -ExceptionMessage $_ break } write-verbose ($response | Out-String) } end { switch ($PsCmdlet.ParameterSetName) { 'byID' { write-output $response } default { write-output $response } } } } #DELETE /api/v2/credentials/{id} function Remove-PPDMcredentials { [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [string]$ID, $PPDM_API_BaseUri = $Global:PPDM_API_BaseUri, $apiver = "/api/v2" ) begin { $Response = @() $METHOD = "DELETE" $Myself = ($MyInvocation.MyCommand.Name.Substring(11) -replace "_", "-").ToLower() # $response = Invoke-WebRequest -Method $Method -Uri $Global:PPDM_API_BaseUri/api/v0/$Myself -Headers $Global:PPDM_API_Headers } Process { $URI = "/$myself/$ID" $Parameters = @{ body = $body Uri = $Uri Method = $Method RequestMethod = 'Rest' PPDM_API_BaseUri = $PPDM_API_BaseUri apiver = $apiver Verbose = $PSBoundParameters['Verbose'] -eq $true } try { $Response += Invoke-PPDMapirequest @Parameters } catch { Get-PPDMWebException -ExceptionMessage $_ break } write-verbose ($response | Out-String) } end { write-output $response } } |