Public/Tools/Get-GlpiToolsKnowledgeBase.ps1
<#
.SYNOPSIS Function is getting Knowledge Base informations from GLPI .DESCRIPTION Function is based on KnowledgeBaseId which you can find in GLPI website Returns object with property's of Knowledge Base .PARAMETER All This parameter will return all Knowledge Base from GLPI .PARAMETER KnowledgeBaseId This parameter can take pipline input, either, you can use this function with -KnowledgeBaseId keyword. Provide to this param KnowledgeBaseId from GLPI Knowledge Base Bookmark .PARAMETER Raw Parameter which you can use with KnowledgeBaseId Parameter. KnowledgeBaseId has converted parameters from default, parameter Raw allows not convert this parameters. .EXAMPLE PS C:\> Get-GlpiToolsKnowledgeBase -All Example will return all Knowledge Base from Glpi .EXAMPLE PS C:\> 326 | Get-GlpiToolsKnowledgeBase Function gets KnowledgeBaseId from GLPI from Pipline, and return Knowledge Base object .EXAMPLE PS C:\> 326, 321 | Get-GlpiToolsKnowledgeBase Function gets KnowledgeBaseId from GLPI from Pipline (u can pass many ID's like that), and return Knowledge Base object .EXAMPLE PS C:\> Get-GlpiToolsKnowledgeBase -KnowledgeBaseId 326 Function gets KnowledgeBaseId from GLPI which is provided through -KnowledgeBaseId after Function type, and return Knowledge Base object .EXAMPLE PS C:\> Get-GlpiToolsKnowledgeBase -KnowledgeBaseId 326, 321 Function gets Knowledge Base Id from GLPI which is provided through -KnowledgeBaseId keyword after Function type (u can provide many ID's like that), and return Knowledge Base object .INPUTS Knowledge Base 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 Knowledge Base from GLPI .NOTES PSP 11/2019 #> function Get-GlpiToolsKnowledgeBase { [CmdletBinding()] param ( [parameter(Mandatory = $false, ParameterSetName = "All")] [switch]$All, [parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = "KnowledgeBaseId")] [alias('KBID')] [string[]]$KnowledgeBaseId, [parameter(Mandatory = $false, ParameterSetName = "KnowledgeBaseId")] [switch]$Raw ) begin { $SessionToken = $Script:SessionToken $AppToken = $Script:AppToken $PathToGlpi = $Script:PathToGlpi $SessionToken = Set-GlpiToolsInitSession | Select-Object -ExpandProperty SessionToken $AppToken = Get-GlpiToolsConfig | Select-Object -ExpandProperty AppToken $PathToGlpi = Get-GlpiToolsConfig | Select-Object -ExpandProperty PathToGlpi $ChoosenParam = ($PSCmdlet.MyInvocation.BoundParameters).Keys $KnowledgeBaseArray = [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)/knowbaseitem/?range=0-9999999999999" } $KnowledgeBaseAll = Invoke-RestMethod @params -Verbose:$false foreach ($KnowledgeBase in $KnowledgeBaseAll) { $KnowledgeBaseHash = [ordered]@{ } $KnowledgeBaseProperties = $KnowledgeBase.PSObject.Properties | Select-Object -Property Name, Value foreach ($KnowledgeBaseProp in $KnowledgeBaseProperties) { $KnowledgeBaseHash.Add($KnowledgeBaseProp.Name, $KnowledgeBaseProp.Value) } $object = [pscustomobject]$KnowledgeBaseHash $KnowledgeBaseArray.Add($object) } $KnowledgeBaseArray $KnowledgeBaseArray = [System.Collections.Generic.List[PSObject]]::New() } KnowledgeBaseId { foreach ( $KBId in $KnowledgeBaseId ) { $params = @{ headers = @{ 'Content-Type' = 'application/json' 'App-Token' = $AppToken 'Session-Token' = $SessionToken } method = 'get' uri = "$($PathToGlpi)/knowbaseitem/$($KBId)" } Try { $KnowledgeBase = Invoke-RestMethod @params -ErrorAction Stop if ($Raw) { $KnowledgeBaseHash = [ordered]@{ } $KnowledgeBaseProperties = $KnowledgeBase.PSObject.Properties | Select-Object -Property Name, Value foreach ($KnowledgeBaseProp in $KnowledgeBaseProperties) { $KnowledgeBaseHash.Add($KnowledgeBaseProp.Name, $KnowledgeBaseProp.Value) } $object = [pscustomobject]$KnowledgeBaseHash $KnowledgeBaseArray.Add($object) } else { $KnowledgeBaseHash = [ordered]@{ } $KnowledgeBaseProperties = $KnowledgeBase.PSObject.Properties | Select-Object -Property Name, Value foreach ($KnowledgeBaseProp in $KnowledgeBaseProperties) { $KnowledgeBasePropNewValue = Get-GlpiToolsParameters -Parameter $KnowledgeBaseProp.Name -Value $KnowledgeBaseProp.Value $KnowledgeBaseHash.Add($KnowledgeBaseProp.Name, $KnowledgeBasePropNewValue) } $object = [pscustomobject]$KnowledgeBaseHash $KnowledgeBaseArray.Add($object) } } Catch { Write-Verbose -Message "Knowledge Base ID = $KBId is not found" } $KnowledgeBaseArray $KnowledgeBaseArray = [System.Collections.Generic.List[PSObject]]::New() } } Default { } } } end { Set-GlpiToolsKillSession -SessionToken $SessionToken } } |