licensing.psm1
|
<# Copyright (c) 2026 One Identity LLC. All rights reserved. #> <# .SYNOPSIS Upload Safeguard license file and install it via the Web API. .DESCRIPTION Upload a Safeguard license file to the staging area and install it. In the Web API this is a two stage process. This cmdlet performs both staging and installation. .PARAMETER Appliance IP address or hostname of a Safeguard appliance. .PARAMETER AccessToken A string containing the bearer token to be used with Safeguard Web API. .PARAMETER Insecure Ignore verification of Safeguard appliance SSL certificate. .PARAMETER LicenseFile A string containing the path to a Safeguard license file. .PARAMETER StageOnly A flag meaning to only stage the license, not installed it (only works with -LicenseFile) .PARAMETER Key A string containing the license key (e.g. 123-123-123) .INPUTS None. .OUTPUTS JSON response from Safeguard Web API. .EXAMPLE Install-SafeguardLicense -AccessToken $token -Appliance 10.5.32.54 .EXAMPLE Install-SafeguardLicense C:\license.dlv #> function Install-SafeguardLicense { [CmdletBinding(DefaultParameterSetName="File")] Param( [Parameter(Mandatory=$false)] [string]$Appliance, [Parameter(Mandatory=$false)] [object]$AccessToken, [Parameter(Mandatory=$false)] [switch]$Insecure, [Parameter(ParameterSetName="File",Mandatory=$true,Position=0)] [string]$LicenseFile, [Parameter(ParameterSetName="File",Mandatory=$false)] [switch]$StageOnly, [Parameter(ParameterSetName="Key",Mandatory=$true)] [string]$Key ) if (-not $PSBoundParameters.ContainsKey("ErrorAction")) { $ErrorActionPreference = "Stop" } if (-not $PSBoundParameters.ContainsKey("Verbose")) { $VerbosePreference = $PSCmdlet.GetVariableValue("VerbosePreference") } if ($PSBoundParameters.ContainsKey("LicenseFile")) { $local:LicenseContents = (Get-Content $LicenseFile) $local:LicenseBase64 = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($local:LicenseContents)) Write-Host "Uploading license file..." $local:StagedLicense = (Invoke-SafeguardMethod -AccessToken $AccessToken -Appliance $Appliance -Insecure:$Insecure Core POST Licenses -Body @{ Base64Data = "$($local:LicenseBase64)" }) if ($StageOnly) { $local:StagedLicense } else { $Key = ($local:StagedLicense.Key) } } try { if (-not $StageOnly) { Write-Host "Installing license with key '$Key'..." Invoke-SafeguardMethod -AccessToken $AccessToken -Appliance $Appliance -Insecure:$Insecure Core POST "Licenses/$Key/Install" } } catch { if ($PSBoundParameters.ContainsKey("LicenseFile")) { Write-Host "License was only staged..." $local:StagedLicense } throw } } <# .SYNOPSIS Uninstall Safeguard license file using the Web API. .DESCRIPTION Uninstall Safeguard license file that was previously installed on the appliance. .PARAMETER Appliance IP address or hostname of a Safeguard appliance. .PARAMETER AccessToken A string containing the bearer token to be used with Safeguard Web API. .PARAMETER Insecure Ignore verification of Safeguard appliance SSL certificate. .PARAMETER Key A string containing the license key (e.g. 123-123-123) .INPUTS None. .OUTPUTS JSON response from Safeguard Web API. .EXAMPLE Uninstall-SafeguardLicense -AccessToken $token -Appliance 10.5.32.54 .EXAMPLE Uninstall-SafeguardLicense -Key "123-123-123" #> function Uninstall-SafeguardLicense { [CmdletBinding()] Param( [Parameter(Mandatory=$false)] [string]$Appliance, [Parameter(Mandatory=$false)] [object]$AccessToken, [Parameter(Mandatory=$false)] [switch]$Insecure, [Parameter(Mandatory=$false,Position=0)] [string]$Key ) if (-not $PSBoundParameters.ContainsKey("ErrorAction")) { $ErrorActionPreference = "Stop" } if (-not $PSBoundParameters.ContainsKey("Verbose")) { $VerbosePreference = $PSCmdlet.GetVariableValue("VerbosePreference") } if (-not $PSBoundParameters.ContainsKey("Key")) { $CurrentKeys = (Get-SafeguardLicense -AccessToken $AccessToken -Appliance $Appliance).Key -join ", " Write-Host "Currently Installed Licenses: [ $CurrentKeys ]" $Key = (Read-Host "Key") } Write-Host "Removing license with key '$Key'..." Invoke-SafeguardMethod -AccessToken $AccessToken -Appliance $Appliance -Insecure:$Insecure Core DELETE "Licenses/$Key" } <# .SYNOPSIS Get Safeguard license file(s) from the Web API. .DESCRIPTION Show Safeguard license file(s) currently installed on the appliance. .PARAMETER Appliance IP address or hostname of a Safeguard appliance. .PARAMETER AccessToken A string containing the bearer token to be used with Safeguard Web API. .PARAMETER Insecure Ignore verification of Safeguard appliance SSL certificate. .PARAMETER Key A string containing the license key to retrieve a specific license. .INPUTS None. .OUTPUTS JSON response from Safeguard Web API. .EXAMPLE Get-SafeguardLicense -AccessToken $token -Appliance 10.5.32.54 #> function Get-SafeguardLicense { [CmdletBinding()] Param( [Parameter(Mandatory=$false)] [string]$Appliance, [Parameter(Mandatory=$false)] [object]$AccessToken, [Parameter(Mandatory=$false)] [switch]$Insecure, [Parameter(Mandatory=$false,Position=0)] [string]$Key ) if (-not $PSBoundParameters.ContainsKey("ErrorAction")) { $ErrorActionPreference = "Stop" } if (-not $PSBoundParameters.ContainsKey("Verbose")) { $VerbosePreference = $PSCmdlet.GetVariableValue("VerbosePreference") } if ($PSBoundParameters.ContainsKey("Key")) { Invoke-SafeguardMethod -AccessToken $AccessToken -Appliance $Appliance -Insecure:$Insecure Core GET "Licenses/$Key" } else { Invoke-SafeguardMethod -AccessToken $AccessToken -Appliance $Appliance -Insecure:$Insecure Core GET Licenses } } |