functions/secret-template-permissions/Search-TssSecretTemplatePermission.ps1
|
function Search-TssSecretTemplatePermission { <# .SYNOPSIS Search secret template permissions .DESCRIPTION Returns the users and groups that hold a role on secret templates, one record per template and user or group. Filter by template, group, domain or search text. .PARAMETER TssSession TssSession object created by New-TssSession for authentication .PARAMETER DomainId Return only permissions held by groups of this domain ID .PARAMETER GroupId Return only permissions held by this group ID .PARAMETER SearchText Text to search for .PARAMETER SecretTemplateId Return only permissions on this secret template ID .PARAMETER UserSearchText Text to search for in user and group names .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Search-TssSecretTemplatePermission -TssSession $session -SecretTemplateId 6001 Get the users and groups that hold a role on template 6001 .LINK https://thycotic-ps.github.io/thycotic.secretserver/commands/secret-template-permissions/Search-TssSecretTemplatePermission .LINK https://github.com/thycotic-ps/thycotic.secretserver/blob/main/src/functions/secret-template-permissions/Search-TssSecretTemplatePermission.ps1 .NOTES Requires TssSession object returned by New-TssSession #> [CmdletBinding()] [OutputType('Thycotic.PowerShell.SecretTemplatePermissions.Permission[]')] param ( [Parameter(Mandatory, ValueFromPipeline, Position = 0)] [Thycotic.PowerShell.Authentication.Session] $TssSession, [int] $DomainId, [int] $GroupId, [string] $SearchText, [Alias('SecretTypeId')] [int] $SecretTemplateId, [string] $UserSearchText ) 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 $uri = $TssSession.ApiUrl, 'secret-template-permissions' -join '/' $queryParams = @() $queryParams += "take=$($TssSession.Take)" switch ($tssParams.Keys) { 'DomainId' { $queryParams += "filter.domainId=$($DomainId)" } 'GroupId' { $queryParams += "filter.groupId=$($GroupId)" } 'SearchText' { $queryParams += "filter.searchText=$([uri]::EscapeDataString($SearchText))" } 'SecretTemplateId' { $queryParams += "filter.secretTypeId=$($SecretTemplateId)" } 'UserSearchText' { $queryParams += "filter.userSearchText=$([uri]::EscapeDataString($UserSearchText))" } } 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 Search-TssSecretTemplatePermission request' $err = $_ . $ErrorHandling $err } if ($restResponse.records) { [Thycotic.PowerShell.SecretTemplatePermissions.Permission[]](. $FilterTssResponse $restResponse.records ([Thycotic.PowerShell.SecretTemplatePermissions.Permission])) } } else { Write-Warning 'No valid session found' } } } |