Public/Setup/Dropdowns/Internet/Get-GlpiToolsDropdownsIpNetworks.ps1
<#
.SYNOPSIS Function is getting Ip Networks informations from GLPI .DESCRIPTION Function is based on IpNetworkId which you can find in GLPI website Returns object with property's of Ip Networks .PARAMETER All This parameter will return all Ip Networks from GLPI .PARAMETER IpNetworkId This parameter can take pipeline input, either, you can use this function with -IpNetworkId keyword. Provide to this param IpNetworkId from GLPI Ip Networks Bookmark .PARAMETER Raw Parameter which you can use with IpNetworkId Parameter. IpNetworkId has converted parameters from default, parameter Raw allows not convert this parameters. .PARAMETER IpNetworkName This parameter can take pipeline input, either, you can use this function with -IpNetworkId keyword. Provide to this param Ip Networks Name from GLPI Ip Networks Bookmark .EXAMPLE PS C:\> Get-GlpiToolsDropdownsIpNetworks -All Example will return all Ip Networks from Glpi .EXAMPLE PS C:\> 326 | Get-GlpiToolsDropdownsIpNetworks Function gets IpNetworkId from GLPI from pipeline, and return Ip Networks object .EXAMPLE PS C:\> 326, 321 | Get-GlpiToolsDropdownsIpNetworks Function gets IpNetworkId from GLPI from pipeline (u can pass many ID's like that), and return Ip Networks object .EXAMPLE PS C:\> Get-GlpiToolsDropdownsIpNetworks -IpNetworkId 326 Function gets IpNetworkId from GLPI which is provided through -IpNetworkId after Function type, and return Ip Networks object .EXAMPLE PS C:\> Get-GlpiToolsDropdownsIpNetworks -IpNetworkId 326, 321 Function gets Ip Networks Id from GLPI which is provided through -IpNetworkId keyword after Function type (u can provide many ID's like that), and return Ip Networks object .EXAMPLE PS C:\> Get-GlpiToolsDropdownsIpNetworks -IpNetworkName Fusion Example will return glpi Ip Networks, but what is the most important, Ip Networks will be shown exactly as you see in glpi dropdown Ip Networks. If you want to add parameter, you have to modify "default items to show". This is the "key/tool" icon near search. .INPUTS Ip Networks 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 Ip Networks from GLPI .NOTES PSP 09/2019 #> function Get-GlpiToolsDropdownsIpNetworks { [CmdletBinding()] param ( [parameter(Mandatory = $false, ParameterSetName = "All")] [switch]$All, [parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = "IpNetworkId")] [alias('INID')] [string[]]$IpNetworkId, [parameter(Mandatory = $false, ParameterSetName = "IpNetworkId")] [switch]$Raw, [parameter(Mandatory = $true, ParameterSetName = "IpNetworkName")] [alias('INN')] [string]$IpNetworkName ) 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 $IpNetworksArray = [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)/ipnetwork/?range=0-9999999999999" } $IpNetworksAll = Invoke-RestMethod @params -Verbose:$false foreach ($IpNetwork in $IpNetworksAll) { $IpNetworkHash = [ordered]@{ } $IpNetworkProperties = $IpNetwork.PSObject.Properties | Select-Object -Property Name, Value foreach ($IpNetworkProp in $IpNetworkProperties) { $IpNetworkHash.Add($IpNetworkProp.Name, $IpNetworkProp.Value) } $object = [pscustomobject]$IpNetworkHash $IpNetworksArray.Add($object) } $IpNetworksArray $IpNetworksArray = [System.Collections.Generic.List[PSObject]]::New() } IpNetworkId { foreach ( $INId in $IpNetworkId ) { $params = @{ headers = @{ 'Content-Type' = 'application/json' 'App-Token' = $AppToken 'Session-Token' = $SessionToken } method = 'get' uri = "$($PathToGlpi)/ipnetwork/$($INId)" } Try { $IpNetwork = Invoke-RestMethod @params -ErrorAction Stop if ($Raw) { $IpNetworkHash = [ordered]@{ } $IpNetworkProperties = $IpNetwork.PSObject.Properties | Select-Object -Property Name, Value foreach ($IpNetworkProp in $IpNetworkProperties) { $IpNetworkHash.Add($IpNetworkProp.Name, $IpNetworkProp.Value) } $object = [pscustomobject]$IpNetworkHash $IpNetworksArray.Add($object) } else { $IpNetworkHash = [ordered]@{ } $IpNetworkProperties = $IpNetwork.PSObject.Properties | Select-Object -Property Name, Value foreach ($IpNetworkProp in $IpNetworkProperties) { $IpNetworkPropNewValue = Get-GlpiToolsParameters -Parameter $IpNetworkProp.Name -Value $IpNetworkProp.Value $IpNetworkHash.Add($IpNetworkProp.Name, $IpNetworkPropNewValue) } $object = [pscustomobject]$IpNetworkHash $IpNetworksArray.Add($object) } } Catch { Write-Verbose -Message "Ip Network ID = $INId is not found" } $IpNetworksArray $IpNetworksArray = [System.Collections.Generic.List[PSObject]]::New() } } IpNetworkName { Search-GlpiToolsItems -SearchFor ipnetwork -SearchType contains -SearchValue $IpNetworkName } Default { } } } end { Set-GlpiToolsKillSession -SessionToken $SessionToken } } |