Public/Setup/Dropdowns/Software/Get-GlpiToolsDropdownsSoftwareCategory.ps1
<#
.SYNOPSIS Function is getting Software Category's informations from GLPI .DESCRIPTION Function is based on SoftwareCategoryId which you can find on GLPI website Returns object with property's of Software Category's .PARAMETER All This parameter will return all Software Category's from GLPI .PARAMETER SoftwareCategoryId This parameter can take pipline input, either, you can use this function with -SoftwareCategoryId keyword. Provide to this param Software Category ID from GLPI Software Category Bookmark .PARAMETER SoftwareCategoryName You can use this function with -SoftwareCategoryName keyword. Provide to this param Software Category Name from GLPI Software Category Bookmark .EXAMPLE PS C:\Users\Wojtek> 326 | Get-GlpiToolsDropdownsSoftwareCategory Function gets SoftwareCategoryId from GLPI from Pipline, and return Update Sources object .EXAMPLE PS C:\Users\Wojtek> 326, 321 | Get-GlpiToolsDropdownsSoftwareCategory Function gets SoftwareCategoryId from GLPI from Pipline (u can pass many ID's like that), and return Software Category object .EXAMPLE PS C:\Users\Wojtek> Get-GlpiToolsDropdownsSoftwareCategory -SoftwareCategoryId 326 Function gets SoftwareCategoryId from GLPI which is provided through -SoftwareCategoryId after Function type, and return Software Category object .EXAMPLE PS C:\Users\Wojtek> Get-GlpiToolsDropdownsSoftwareCategory -SoftwareCategoryId 326, 321 Function gets SoftwareCategoryId from GLPI which is provided through -SoftwareCategoryId keyword after Function type (u can provide many ID's like that), and return Software Category object .INPUTS Software Category's ID which you can find in GLPI, or use this Function to convert ID returned from other Functions .OUTPUTS Function returns PSCustomObject with property's of Software Category's from GLPI .NOTES PSP 04/2019 #> function Get-GlpiToolsDropdownsSoftwareCategory { [CmdletBinding()] param ( [parameter(Mandatory = $false, ParameterSetName = "All")] [switch]$All, [parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = "SoftwareCategoryId")] [alias('SCID')] [string[]]$SoftwareCategoryId, [parameter(Mandatory = $true, ParameterSetName = "SoftwareCategoryName")] [alias('SCN')] [string]$SoftwareCategoryName ) begin { $AppToken = $Script:AppToken $PathToGlpi = $Script:PathToGlpi $SessionToken = $Script:SessionToken $AppToken = Get-GlpiToolsConfig -Verbose:$false | Select-Object -ExpandProperty AppToken $PathToGlpi = Get-GlpiToolsConfig -Verbose:$false | Select-Object -ExpandProperty PathToGlpi $SessionToken = Set-GlpiToolsInitSession -Verbose:$false | Select-Object -ExpandProperty SessionToken $ChoosenParam = ($PSCmdlet.MyInvocation.BoundParameters).Keys $SoftwareCategoryObjectArray = [System.Collections.Generic.List[PSObject]]::New() } process { switch ($ChoosenParam) { All { $params = @{ headers = @{ 'Content-Type' = 'application/json' 'App-Token' = $AppToken 'Session-Token' = $SessionToken } method = 'get' uri = "$($PathToGlpi)/SoftwareCategory/?range=0-99999999999" } $GlpiSoftwareCategoryAll = Invoke-RestMethod @params -Verbose:$false foreach ($GlpiSoftwareCategory in $GlpiSoftwareCategoryAll) { $SoftwareCategoryHash = [ordered]@{ } $SoftwareCategoryProperties = $GlpiSoftwareCategory.PSObject.Properties | Select-Object -Property Name, Value foreach ($SoftwareCategoryProp in $SoftwareCategoryProperties) { $SoftwareCategoryHash.Add($SoftwareCategoryProp.Name, $SoftwareCategoryProp.Value) } $object = [pscustomobject]$SoftwareCategoryHash $SoftwareCategoryObjectArray.Add($object) } $SoftwareCategoryObjectArray $SoftwareCategoryObjectArray = [System.Collections.Generic.List[PSObject]]::New() } SoftwareCategoryId { foreach ( $SCId in $SoftwareCategoryId ) { $params = @{ headers = @{ 'Content-Type' = 'application/json' 'App-Token' = $AppToken 'Session-Token' = $SessionToken } method = 'get' uri = "$($PathToGlpi)/SoftwareCategory/$($SCId)" } Try { $GlpiSoftwareCategory = Invoke-RestMethod @params -ErrorAction Stop $SoftwareCategoryHash = [ordered]@{ } $SoftwareCategoryProperties = $GlpiSoftwareCategory.PSObject.Properties | Select-Object -Property Name, Value foreach ($SoftwareCategoryProp in $SoftwareCategoryProperties) { $SoftwareCategoryHash.Add($SoftwareCategoryProp.Name, $SoftwareCategoryProp.Value) } $object = [pscustomobject]$SoftwareCategoryHash $SoftwareCategoryObjectArray.Add($object) } catch { Write-Verbose -Message "Software Category ID = $SCId is not found" } $SoftwareCategoryObjectArray $SoftwareCategoryObjectArray = [System.Collections.Generic.List[PSObject]]::New() } } SoftwareCategoryName { Search-GlpiToolsItems -SearchFor Softwarecategory -SearchType contains -SearchValue $SoftwareCategoryName } Default { } } } end { Set-GlpiToolsKillSession -SessionToken $SessionToken -Verbose:$false } } |