Public/New-LMCachedAccount.ps1
<# .SYNOPSIS Store a connection to a specified LM portal for use with Connect-LMAccount .DESCRIPTION Connect to a specified LM portal which will allow you run the other LM commands associated with the Logic.Monitor PS module. Used in conjunction with Disconnect-LMAccount to close a session previously connected via Connect-LMAccount .PARAMETER AccessId Access ID from your API credential acquired from the LM Portal .PARAMETER AccessKey Access Key from your API credential acquired from the LM Portal .PARAMETER AccountName The subdomain for your LM portal, the name before ".logicmonitor.com" (subdomain.logicmonitor.com) .EXAMPLE New-LMCachedAccount -AccessId xxxxxx -AccessKey xxxxxx -AccountName subdomain #> Function New-LMCachedAccount { [CmdletBinding(DefaultParameterSetName = "LMv1")] Param ( [Parameter(Mandatory, ParameterSetName = "LMv1")] [String]$AccessId, [Parameter(Mandatory, ParameterSetName = "LMv1")] [String]$AccessKey, [Parameter(Mandatory, ParameterSetName = "LMv1")] [Parameter(Mandatory, ParameterSetName = "Bearer")] [String]$AccountName, [Parameter(Mandatory, ParameterSetName = "Bearer")] [String]$BearerToken, [String]$CachedAccountName = $AccountName, [Boolean]$OverwriteExisting = $false ) Try { $ExistingVault = Get-SecretInfo -Name Logic.Monitor -WarningAction Stop Write-Host "[INFO]: Existing vault Logic.Monitor already exists, skipping creation" } Catch { If ($_.Exception.Message -like "*There are currently no extension vaults registered*") { Write-Host "[INFO]: Credential vault for cached accounts does not currently exist, creating credential vault: Logic.Monitor" Register-SecretVault -Name Logic.Monitor -ModuleName Microsoft.PowerShell.SecretStore Get-SecretStoreConfiguration | Out-Null } } $CurrentDate = Get-Date #Convert to secure string If ($BearerToken) { $Secret = $BearerToken | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString [Hashtable]$Metadata = @{ Portal = [String]$AccountName Id = "$($BearerToken.Substring(0,20))****" Modified = [DateTime]$CurrentDate Type = "Bearer" } } Else { $Secret = $AccessKey | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString [Hashtable]$Metadata = @{ Portal = [String]$AccountName Id = [String]$AccessId Modified = [DateTime]$CurrentDate Type = "LMv1" } } Try { Set-Secret -Name $CachedAccountName -Secret $Secret -Vault Logic.Monitor -Metadata $Metadata -NoClobber:$(!$OverwriteExisting) Write-Host "[INFO]: Successfully created cached account ($CachedAccountName) secret for portal: $AccountName" } Catch { Write-Error $_.Exception.Message } Return } |