functions/discovery/Get-TssDiscoverySourceOu.ps1
|
function Get-TssDiscoverySourceOu { <# .SYNOPSIS Search the organizational units of an Active Directory discovery source .DESCRIPTION Searches the organizational units (OUs) of an Active Directory discovery source. Returns nothing for source types that have no OUs. .PARAMETER TssSession TssSession object created by New-TssSession for authentication .PARAMETER Id Discovery source ID .PARAMETER Include Only return OUs that can be included in the discovery scope .PARAMETER SearchText Only return OUs whose name contains this text .PARAMETER SelectedIds OU IDs to limit the search to when -Include is not set .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Get-TssDiscoverySourceOu -TssSession $session -Id 3 -SearchText 'Servers' Search discovery source 3 for OUs whose name contains Servers .LINK https://thycotic-ps.github.io/thycotic.secretserver/commands/discovery/Get-TssDiscoverySourceOu .LINK https://github.com/thycotic-ps/thycotic.secretserver/blob/main/src/functions/discovery/Get-TssDiscoverySourceOu.ps1 .NOTES Requires TssSession object returned by New-TssSession #> [CmdletBinding()] [OutputType('Thycotic.PowerShell.Discovery.SourceOu[]')] param ( [Parameter(Mandatory, ValueFromPipeline, Position = 0)] [Thycotic.PowerShell.Authentication.Session] $TssSession, [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [Alias('DiscoverySourceId')] [int[]] $Id, [switch] $Include, [string] $SearchText, [string[]] $SelectedIds ) begin { $tssParams = $PSBoundParameters $invokeParams = . $GetInvokeApiParams $TssSession } process { Get-TssInvocation $PSCmdlet.MyInvocation if ($tssParams.ContainsKey('TssSession') -and $TssSession.IsValidSession()) { Compare-TssVersion $TssSession '10.9.000000' $PSCmdlet.MyInvocation foreach ($currentId in $Id) { $restResponse = $null $uri = $TssSession.ApiUrl, 'discovery', 'source', $currentId, 'ou' -join '/' $queryParams = @() $queryParams += "take=$($TssSession.Take)" switch ($tssParams.Keys) { 'Include' { $queryParams += "include=$([boolean]$Include)" } 'SearchText' { $queryParams += "searchText=$([uri]::EscapeDataString($SearchText))" } 'SelectedIds' { foreach ($queryValue in $SelectedIds) { $queryParams += "selectedIds=$([uri]::EscapeDataString($queryValue))" } } } if ($queryParams) { $uri = $uri, ($queryParams -join '&') -join '?' } $invokeParams.Uri = $uri $invokeParams.Method = 'GET' Write-Verbose "Performing the operation $($invokeParams.Method) $uri" try { $apiResponse = Invoke-TssApi @invokeParams $restResponse = . $ProcessResponse $apiResponse } catch { Write-Warning 'Issue with Get-TssDiscoverySourceOu request' $err = $_ . $ErrorHandling $err } if ($restResponse) { [Thycotic.PowerShell.Discovery.SourceOu[]](. $FilterTssResponse $restResponse ([Thycotic.PowerShell.Discovery.SourceOu])) } } } else { Write-Warning 'No valid session found' } } } |