From f98315a614c9d2ccc975b69bd85df5405fa6a34e Mon Sep 17 00:00:00 2001 From: Petri Asikainen Date: Sun, 23 May 2021 22:58:06 +0300 Subject: [PATCH] get and set licenceseats --- SnipeitPS/Public/Get-SnipeItLicenseSeat.ps1 | 97 +++++++++++++++++++++ SnipeitPS/Public/Set-SnipeItLicenseSeat.ps1 | 78 +++++++++++++++++ SnipeitPS/SnipeItPS.psd1 | 2 + 3 files changed, 177 insertions(+) create mode 100644 SnipeitPS/Public/Get-SnipeItLicenseSeat.ps1 create mode 100644 SnipeitPS/Public/Set-SnipeItLicenseSeat.ps1 diff --git a/SnipeitPS/Public/Get-SnipeItLicenseSeat.ps1 b/SnipeitPS/Public/Get-SnipeItLicenseSeat.ps1 new file mode 100644 index 0000000..6a91813 --- /dev/null +++ b/SnipeitPS/Public/Get-SnipeItLicenseSeat.ps1 @@ -0,0 +1,97 @@ +<# +.SYNOPSIS +Gets a list of Snipe-it Licenses Seats or specific Seat + +.PARAMETER search +A text string to search the Licenses data + +.PARAMETER id +A id of specific License + +.PARAMETER seat_id +A id of specific seat + +.PARAMETER limit +Specify the number of results you wish to return. Defaults to 50. Defines batch size for -all + +.PARAMETER offset +Offset to use + +.PARAMETER all +A return all results, works with -offset and other parameters + + +.PARAMETER url +URL of Snipeit system, can be set using Set-SnipeItInfo command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-SnipeItInfo command + +.EXAMPLE +Get-License -search SomeLicense + +.EXAMPLE +Get-License -id 1 + +#> + +function Get-SnipeItLicenseSeat() { + Param( + + [parameter(mandatory = $true)] + [int]$id, + + [int]$seat_id, + + [int]$limit = 50, + + [int]$offset, + + [switch]$all = $false, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + Test-SnipeItAlias -invocationName $MyInvocation.InvocationName -commandName $MyInvocation.MyCommand.Name + + $SearchParameter = . Get-ParameterValue $MyInvocation.MyCommand.Parameters + + $apiurl = "$url/api/v1/licenses/$id/seats" + + + if ($seat_id) { + $apiurl= "$url/api/v1/licenses/$id/seats/$seat_id" + } + + $Parameters = @{ + Uri = $apiurl + Method = 'Get' + Token = $apiKey + GetParameters = $SearchParameter + } + + if ($all) { + $offstart = $(if($offset){$offset} Else {0}) + $callargs = $SearchParameter + $callargs.Remove('all') + + while ($true) { + $callargs['offset'] = $offstart + $callargs['limit'] = $limit + $res=Get-SnipeItLicenseSeat @callargs + $res + if ($res.count -lt $limit) { + break + } + $offstart = $offstart + $limit + } + } else { + $result = Invoke-SnipeitMethod @Parameters + $result + } +} + diff --git a/SnipeitPS/Public/Set-SnipeItLicenseSeat.ps1 b/SnipeitPS/Public/Set-SnipeItLicenseSeat.ps1 new file mode 100644 index 0000000..387c448 --- /dev/null +++ b/SnipeitPS/Public/Set-SnipeItLicenseSeat.ps1 @@ -0,0 +1,78 @@ +<# + .SYNOPSIS + Set license seat or checkout license seat + .DESCRIPTION + Checkout specific license seat to user, asset or both + + .PARAMETER ID + Unique ID For asset to checkout + + .PARAMETER assigned_to + Id of target user + + .PARAMETER asset_id + Id of target asset + + .PARAMETER note + Notes about checkout + + .PARAMETER url + URL of Snipeit system, can be set using Set-SnipeItInfo command + + .PARAMETER apiKey + User's API Key for Snipeit, can be set using Set-SnipeItInfo command + + .EXAMPLE + Set-SnipeItLicenceSeat -ID 1 -seat_id 1 -assigned_id 3 -Verbose + Checkout licence to user id 3 + + .EXAMPLE + Set-SnipeItLicenceSeat -ID 1 -seat_id 1 -asset_id 3 -Verbose + Checkout licence to asset id 3 + +#> +function Set-SnipeItLicenceSeat() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "Medium" + )] + + Param( + [parameter(mandatory = $true)] + [int]$id, + + [parameter(mandatory = $true)] + [int]$seat_id, + + [int]$assigned_id, + + [int]$asset_id, + + [string]$note, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + $Values = . Get-ParameterValue $MyInvocation.MyCommand.Parameters + + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/licenses/$id/seats/$seat_id" + Method = 'Patch' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + return $result +} diff --git a/SnipeitPS/SnipeItPS.psd1 b/SnipeitPS/SnipeItPS.psd1 index bc3f7f8..fa1464e 100644 --- a/SnipeitPS/SnipeItPS.psd1 +++ b/SnipeitPS/SnipeItPS.psd1 @@ -93,6 +93,8 @@ FunctionsToExport = @( 'New-SnipeItLicense', 'Set-SnipeItLicense', 'Get-SnipeItLicense', + 'Get-SnipeItLicenseSeat', + 'Set-SnipeItLicenseSeat', 'New-SnipeItLocation', 'New-SnipeItManufacturer', 'New-SnipeItModel',