SnipeitPS/SnipeitPS/Public/Connect-SnipeitPS.ps1

94 lines
3.1 KiB
PowerShell
Raw Normal View History

2021-08-22 22:09:34 +03:00
<#
.SYNOPSIS
Sets authetication information
.DESCRIPTION
Sets apikey and url to connect Snipe-It system.
Based on Set-SnipeitInfo command, what is now just combatipility wrapper
2021-08-22 22:09:34 +03:00
and calls Connect-SnipeitPS
.PARAMETER url
URL of Snipeit system.
.PARAMETER apiKey
User's API Key for Snipeit.
.PARAMETER secureApiKey
Snipe it Api key as securestring
.PARAMETER siteCred
PSCredential where username shoul be snipe it url and password should be
snipe it apikey.
2021-08-22 22:09:34 +03:00
.EXAMPLE
Connect-SnipeitPS -Url $url -apiKey $myapikey
Connect to Snipe it api.
2021-08-22 22:09:34 +03:00
.EXAMPLE
Connect-SnipeitPS -Url $url -SecureApiKey $myapikey
Connects to Snipe it api with apikey stored to securestring
2021-08-22 22:09:34 +03:00
.EXAMPLE
Connect-SnipeitPS -siteCred (Get-Credential -message "Use site url as username and apikey as password")
Connect to Snipe It with PSCredential object.
To use saved creadentials yu can use export-clixml and import-clixml commandlets.
2021-08-22 22:09:34 +03:00
.EXAMPLE
Build credential with apikey value from secret vault (Microsoft.PowerShell.SecretManagement)
$siteurl = "https://mysnipeitsite.url"
$apikey = Get-SecretInfo -Name SnipeItApiKey
$siteCred = New-Object -Type PSCredential -Argumentlist $siteurl,$spikey
Connect-SnipeitPS -siteCred $siteCred
2021-08-22 22:09:34 +03:00
#>
function Connect-SnipeitPS {
[CmdletBinding(
DefaultParameterSetName = 'Connect with url and apikey'
2021-08-22 22:09:34 +03:00
)]
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseShouldProcessForStateChangingFunctions', '')]
param (
[Parameter(ParameterSetName='Connect with url and apikey',Mandatory=$true)]
[Parameter(ParameterSetName='Connect with url and secure apikey',Mandatory=$true)]
2021-08-22 22:09:34 +03:00
[Uri]$url,
[Parameter(ParameterSetName='Connect with url and apikey',Mandatory=$true)]
2021-08-22 22:09:34 +03:00
[String]$apiKey,
[Parameter(ParameterSetName='Connect with url and secure apikey',Mandatory=$true)]
[SecureString]$secureApiKey,
[Parameter(ParameterSetName='Connect with credential',Mandatory=$true)]
[PSCredential]$siteCred
2021-08-22 22:09:34 +03:00
)
PROCESS {
switch ($PsCmdlet.ParameterSetName) {
'Connect with url and apikey' {
2021-08-23 18:39:32 +03:00
$SnipeitPSSession.url = $url.AbsoluteUri.TrimEnd('/')
2021-08-23 18:01:09 +03:00
$SnipeitPSSession.apiKey = ConvertTo-SecureString -AsPlainText -String $apiKey
}
2021-08-22 22:09:34 +03:00
'Connect with url and secure apikey' {
2021-08-23 18:39:32 +03:00
$SnipeitPSSession.url = $url.AbsoluteUri.TrimEnd('/')
$SnipeitPSSession.apiKey = $secureApiKey
2021-08-22 22:09:34 +03:00
}
'Connect with credential' {
$SnipeitPSSession.url = ($siteCred.GetNetworkCredential().UserName).TrimEnd('/')
$SnipeitPSSession.apiKey = $siteCred.GetNetworkCredential().SecurePassword
2021-08-22 22:09:34 +03:00
}
}
Write-Debug "Site-url $($SnipeitPSSession.url)"
Write-Debug "Site apikey: $($SnipeitPSSession.apiKey)"
if (-not (Test-SnipeitPSConnection)) {
throw "Cannot verify connection to snipe it. For the start try to check url and provided apikey or credential parameters"
}
2021-08-22 22:09:34 +03:00
}
}