From ac842e3d6a92a26857ceea259444b80c4a6d6719 Mon Sep 17 00:00:00 2001 From: Petri Asikainen Date: Sun, 13 Jun 2021 18:13:22 +0300 Subject: [PATCH] manage categories --- SnipeitPS/Public/New-SnipeitCategory.ps1 | 79 +++++++++--------- SnipeitPS/Public/Remove-SnipeitCategory.ps1 | 2 +- SnipeitPS/Public/Set-SnipeitCategory.ps1 | 90 +++++++++++++++++++++ 3 files changed, 130 insertions(+), 41 deletions(-) create mode 100644 SnipeitPS/Public/Set-SnipeitCategory.ps1 diff --git a/SnipeitPS/Public/New-SnipeitCategory.ps1 b/SnipeitPS/Public/New-SnipeitCategory.ps1 index 02aa68a..62ca0e9 100644 --- a/SnipeitPS/Public/New-SnipeitCategory.ps1 +++ b/SnipeitPS/Public/New-SnipeitCategory.ps1 @@ -8,11 +8,8 @@ Name of new category to be created .PARAMETER type Type of new category to be created (asset, accessory, consumable, component, license) -.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 +.PARAMETER eula_text +This allows you to customize your EULAs for specific types of assets .PARAMETER use_default_eula If switch is present, use the primary default EULA @@ -23,6 +20,12 @@ If switch is present, require users to confirm acceptance of assets in this cate .PARAMETER checkin_email If switch is present, send email to user on checkin/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 New-SnipeitCategory -name "Laptops" -category_type asset -url "Snipe-IT URL here..." -apiKey "API key here..." #> @@ -42,51 +45,47 @@ function New-SnipeitCategory() [ValidateSet("asset", "accessory", "consumable", "component", "license")] [string]$category_type, - [parameter(mandatory = $true)] - [string]$url, + [string]$eula_text, - [parameter(mandatory = $true)] - [string]$apiKey, [switch]$use_default_eula, [switch]$require_acceptance, - [switch]$checkin_email + [switch]$checkin_email, + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + begin { + Test-SnipeitAlias -invocationName $MyInvocation.InvocationName -commandName $MyInvocation.MyCommand.Name - Test-SnipeitAlias -invocationName $MyInvocation.InvocationName -commandName $MyInvocation.MyCommand.Name + if($eula_text -and $use_default_eula){ + throw 'Dont use -use_defalt_eula if -eula_text is set' + } - $Values = @{ - "name" = $name - "category_type" = $category_type + $Values = . Get-ParameterValue -Parameters $MyInvocation.MyCommand.Parameters -BoundParameters $PSBoundParameters + + $Body = $Values | ConvertTo-Json; } - if ($use_default_eula) { - $Values += @{"use_default_eula" = $true} + process { + + $Parameters = @{ + Uri = "$url/api/v1/categories" + Method = 'POST' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result } - - if ($require_acceptance) { - $Values += @{"require_acceptance" = $true} - } - - if ($checkin_email) { - $Values += @{"checkin_email" = $true} - } - - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/categories" - Method = 'POST' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess("ShouldProcess?")) - { - $result = Invoke-SnipeitMethod @Parameters - } - - $result } diff --git a/SnipeitPS/Public/Remove-SnipeitCategory.ps1 b/SnipeitPS/Public/Remove-SnipeitCategory.ps1 index ee864a4..873858b 100644 --- a/SnipeitPS/Public/Remove-SnipeitCategory.ps1 +++ b/SnipeitPS/Public/Remove-SnipeitCategory.ps1 @@ -18,7 +18,7 @@ Get-SnipeitCategory -search something | Remove-SnipeitCategory #> -function Remove-SnipeitModel () +function Remove-SnipeitCategory () { [CmdletBinding( SupportsShouldProcess = $true, diff --git a/SnipeitPS/Public/Set-SnipeitCategory.ps1 b/SnipeitPS/Public/Set-SnipeitCategory.ps1 new file mode 100644 index 0000000..a1603e9 --- /dev/null +++ b/SnipeitPS/Public/Set-SnipeitCategory.ps1 @@ -0,0 +1,90 @@ +<# +.SYNOPSIS +Create a new Snipe-IT Category + +.PARAMETER name +Name of new category to be created + +.PARAMETER type +Type of new category to be created (asset, accessory, consumable, component, license) + +.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 + +.PARAMETER use_default_eula +If switch is present, use the primary default EULA + +.PARAMETER eula_text +This allows you to customize your EULAs for specific types of assets + +.PARAMETER require_acceptance +If switch is present, require users to confirm acceptance of assets in this category + +.PARAMETER checkin_email +Should the user be emailed the EULA and/or an acceptance confirmation email when this item is checked in? + +.EXAMPLE +Set-SnipeitCategory -id 4 -name "Laptops" +#> + +function Set-SnipeitCategory() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "Low" + )] + + Param( + [parameter(mandatory = $true)] + [int[]]$id, + + [string]$name, + + [ValidateSet("asset", "accessory", "consumable", "component", "license")] + [string]$category_type, + + [string]$eula_text, + + [bool]$use_default_eula, + + [bool]$require_acceptance, + + [bool]$checkin_email, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + + ) + + begin { + Test-SnipeitAlias -invocationName $MyInvocation.InvocationName -commandName $MyInvocation.MyCommand.Name + + $Values = . Get-ParameterValue -Parameters $MyInvocation.MyCommand.Parameters -BoundParameters $PSBoundParameters + + $Body = $Values | ConvertTo-Json; + } + + process { + foreach($category_id in $id){ + $Parameters = @{ + Uri = "$url/api/v1/categories/$category_id" + Method = 'Put' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result + } + } +}