modules/license.psm1
<#
.Synopsis Get all Licenses .Description Retrieves licenses that are available on the system. PowerProtect Data Manager licenses include status details such as capacity usage, license Type, license status. Type can be CAPACITY, SOCKET, APPLIANCE. .Example Get License Get-PPDMlicenses id : c56709ec-0982-4eac-89c5-948e17fe931e swid : xxxx activationDate : 25.05.2021 15:37:12 type : SOCKET status : VALID key : <?xml version="1.0" encoding="UTF-8"?> <!--Copyright (c) 2010-2016 EMC Inc. All Rights Reserved.--><EMCLicense version="1.0"> <ActivationInfo> <ActivationId>xxxx</ActivationId> <ActivationDate>Mar 08, 2019 01:56:26 PM</ActivationDate> <ActivatedBy>xxx</ActivatedBy> ... .Example Get License by ID Get-PPDMlicenses -id c56709ec-0982-4eac-89c5-948e17fe931e id : c56709ec-0982-4eac-89c5-948e17fe931e swid : xxxx activationDate : 25.05.2021 15:37:12 type : SOCKET status : VALID key : <?xml version="1.0" encoding="UTF-8"?> <!--Copyright (c) 2010-2016 EMC Inc. All Rights Reserved.--><EMCLicense version="1.0"> <ActivationInfo> <ActivationId>xxxx</ActivationId> <ActivationDate>Mar 08, 2019 01:56:26 PM</ActivationDate> <ActivatedBy>xxx</ActivatedBy> ... #> function Get-PPDMlicenses { [CmdletBinding()] param( [Parameter(Mandatory = $true, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] $id, [Parameter(Mandatory = $false, ParameterSetName = 'all', ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $false, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] $PPDM_API_BaseUri = $Global:PPDM_API_BaseUri, [Parameter(Mandatory = $false, ParameterSetName = 'all', ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $false, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] $apiver = "/api/v2" ) begin { $Response = @() $METHOD = "GET" $Myself = ($MyInvocation.MyCommand.Name.Substring(8) -replace "_", "-").ToLower() } Process { switch ($PsCmdlet.ParameterSetName) { 'byID' { $URI = "/$myself/$id" } default { $URI = "/$myself" } } $Parameters = @{ RequestMethod = 'REST' Uri = $URI Method = $Method PPDM_API_BaseUri = $PPDM_API_BaseUri apiver = $apiver Verbose = $PSBoundParameters['Verbose'] -eq $true } Write-Verbose ($Parameters | Out-String) 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 } } } } <# .Synopsis Creates a new license. .Description Creates a new license. A license xml file is passed in a key field. .Example Update a License by id: $id = (Get-PPDMlicenses).id $newkey=(Get-Content 'C:\Users\Karsten_Bott\Downloads\PPDM_3508081_08-Mar-2019_exp_eval.xml' | Out-String ) Set-PPDMLicenses -LicenseKey $newkey -id $id id : c56709ec-0982-4eac-89c5-948e17fe931e swid : xxxxxxxxxxx activationDate : 25.05.2021 15:37:12 type : SOCKET status : VALID key : <?xml version="1.0" encoding="UTF-8"?> <!--Copyright (c) 2010-2016 EMC Inc. All Rights Reserved.--><EMCLicense version="1.0"> <ActivationInfo> <ActivationId>xxxx</ActivationId> <ActivationDate>Mar 08, 2019 01:56:26 PM</ActivationDate> <ActivatedBy>xxxx</ActivatedBy> <ActivationType>ACTIVATE</ActivationType> ... #> function Set-PPDMLicenses { [CmdletBinding()] param( [Parameter(Mandatory = $false, ParameterSetName = 'all', ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $false, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] [ValidateLength(1, 99999)][string]$LicenseKey, [Parameter(Mandatory = $true, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] $id, [Parameter(Mandatory = $false, ParameterSetName = 'all', ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $false, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] $PPDM_API_BaseUri = $Global:PPDM_API_BaseUri, [Parameter(Mandatory = $false, ParameterSetName = 'all', ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $false, ParameterSetName = 'byID', ValueFromPipelineByPropertyName = $true)] $apiver = "/api/v2", [Parameter(Mandatory = $false, ValueFromPipeline = $false, ParameterSetName = 'all')] [Parameter(Mandatory = $false, ValueFromPipeline = $false, ParameterSetName = 'byId')] <# noop Parameter will simulate the command only #> [switch]$noop ) begin { $Response = @() $METHOD = "POST" $Myself = ($MyInvocation.MyCommand.Name.Substring(8) -replace "_", "-").ToLower() } Process { switch ($PsCmdlet.ParameterSetName) { 'byID' { $URI = "/$myself/$id" $METHOD = 'PUT' } default { $URI = "/$myself" } } $Body = [ordered]@{ 'key' = $LicenseKey } | ConvertTo-Json $Parameters = @{ body = $body RequestMethod = 'REST' Uri = $URI Method = $Method PPDM_API_BaseUri = $PPDM_API_BaseUri apiver = $apiver Verbose = $PSBoundParameters['Verbose'] -eq $true } Write-Verbose ($Parameters | Out-String) 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 } } } } |