Public/Get-TppObjectConfig.ps1
<#
.SYNOPSIS Get attributes for a given object .DESCRIPTION Retrieves object’s attributes. You can either retrieve all attributes or individual ones. By default, the attributes returned are not the effective policy, but that can be requested with the EffectivePolicy switch. .PARAMETER Path Path to the object to retrieve configuration attributes. Just providing Path will return all attributes. .PARAMETER AttributeName Only retrieve the value/values for this attribute .PARAMETER EffectivePolicy Get the effective policy of the attribute .PARAMETER TppSession Session object created from New-TppSession method. The value defaults to the script session object $TppSession. .INPUTS DN .OUTPUTS .EXAMPLE #> function Get-TppObjectConfig { [CmdletBinding()] param ( [Parameter(Mandatory, ParameterSetName = 'EffectivePolicy', ValueFromPipelineByPropertyName)] [Parameter(Mandatory, ParameterSetName = 'NonEffectivePolicy', ValueFromPipelineByPropertyName)] [ValidateNotNullOrEmpty()] [String[]] $DN, [Parameter(Mandatory, ParameterSetName = 'EffectivePolicy')] [Parameter(ParameterSetName = 'NonEffectivePolicy')] [ValidateNotNullOrEmpty()] [String[]] $AttributeName, [Parameter(Mandatory, ParameterSetName = 'EffectivePolicy')] [Switch] $EffectivePolicy, [Parameter()] [TppSession] $TppSession = $Script:TppSession ) begin { $TppSession.Validate() if ( $AttributeName ) { if ( $EffectivePolicy ) { $uriLeaf = 'config/ReadEffectivePolicy' } else { $uriLeaf = 'config/read' } } else { $uriLeaf = 'config/readall' } $baseParams = @{ TppSession = $TppSession Method = 'Post' UriLeaf = $uriLeaf Body = @{ ObjectDN = '' } } } process { foreach ( $thisDN in $DN ) { $baseParams.Body['ObjectDN'] = $thisDN if ( $AttributeName ) { $configValues = @() # $configValues = [System.Collections.ArrayList] @() foreach ( $thisAttribute in $AttributeName ) { $params = $baseParams.Clone() $params.Body += @{ AttributeName = $thisAttribute } $response = Invoke-TppRestMethod @params if ( $response ) { $configValues += [PSCustomObject] @{ Name = $thisAttribute Value = $response.Values } # $null = $configValues.Add( # [PSCustomObject] @{ # Name = $thisAttribute # Value = $response.Values # } # ) # $null = $configValues.Add($response.Values) } } # attribute } else { $response = Invoke-TppRestMethod @baseParams if ( $response ) { $configValues = $response.NameValues } } # DN if ( $configValues ) { [PSCustomObject] @{ DN = $thisDN Config = $configValues } } } } } |