functions/discovery/New-TssDiscoveryScanner.ps1
|
function New-TssDiscoveryScanner { <# .SYNOPSIS Create a Discovery scanner .DESCRIPTION Creates a Discovery scanner from a base scanner, with its input and output scan templates and, for PowerShell or SSH scanners, the script or command set it runs. Returns the created scanner. .PARAMETER TssSession TssSession object created by New-TssSession for authentication .PARAMETER BaseScannerId Base scanner id .PARAMETER CommandSetId Command set id, for SSH scanners .PARAMETER ConcurrencyId Globally unique id for the scanner. The server sets one when omitted .PARAMETER InputScanItemTemplateId Input scan template id .PARAMETER IsActive Create the scanner active. Without it the scanner is created inactive .PARAMETER ItemScannerDescription Scanner description .PARAMETER ItemScannerName Scanner name .PARAMETER OutputScanItemTemplateId Output scan template id .PARAMETER ScanTypeId Scan type id: 1 find host ranges, 2 find machines, 3 find local accounts, 4 find dependencies .PARAMETER ScriptArguments Arguments passed to the PowerShell script .PARAMETER ScriptId PowerShell script id, for PowerShell scanners .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred New-TssDiscoveryScanner -TssSession $session -ItemScannerName 'Linux local accounts (custom)' -ScanTypeId 3 -BaseScannerId 5 -InputScanItemTemplateId 2 -OutputScanItemTemplateId 6 -CommandSetId 4 -IsActive Create an active SSH scanner that finds local accounts with command set 4 .LINK https://thycotic-ps.github.io/thycotic.secretserver/commands/discovery/New-TssDiscoveryScanner .LINK https://github.com/thycotic-ps/thycotic.secretserver/blob/main/src/functions/discovery/New-TssDiscoveryScanner.ps1 .NOTES Requires TssSession object returned by New-TssSession #> [CmdletBinding(SupportsShouldProcess)] [OutputType('Thycotic.PowerShell.Discovery.Scanner')] param ( [Parameter(Mandatory, ValueFromPipeline, Position = 0)] [Thycotic.PowerShell.Authentication.Session] $TssSession, [Parameter(Mandatory)] [int] $BaseScannerId, [int] $CommandSetId, [string] $ConcurrencyId, [Parameter(Mandatory)] [int] $InputScanItemTemplateId, [switch] $IsActive, [string] $ItemScannerDescription, [Parameter(Mandatory)] [string] $ItemScannerName, [Parameter(Mandatory)] [int] $OutputScanItemTemplateId, [Parameter(Mandatory)] [int] $ScanTypeId, [string] $ScriptArguments, [int] $ScriptId ) 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, 'discovery', 'scanners' -join '/' $invokeParams.Uri = $uri $invokeParams.Method = 'POST' $body = @{ data = @{ } } switch ($tssParams.Keys) { 'BaseScannerId' { $body.data.Add('baseScannerId', $BaseScannerId) } 'CommandSetId' { $body.data.Add('commandSetId', $CommandSetId) } 'ConcurrencyId' { $body.data.Add('concurrencyId', $ConcurrencyId) } 'InputScanItemTemplateId' { $body.data.Add('inputScanItemTemplateId', $InputScanItemTemplateId) } 'IsActive' { $body.data.Add('isActive', [boolean]$IsActive) } 'ItemScannerDescription' { $body.data.Add('itemScannerDescription', $ItemScannerDescription) } 'ItemScannerName' { $body.data.Add('itemScannerName', $ItemScannerName) } 'OutputScanItemTemplateId' { $body.data.Add('outputScanItemTemplateId', $OutputScanItemTemplateId) } 'ScanTypeId' { $body.data.Add('scanTypeId', $ScanTypeId) } 'ScriptArguments' { $body.data.Add('scriptArguments', $ScriptArguments) } 'ScriptId' { $body.data.Add('scriptId', $ScriptId) } } $invokeParams.Body = $body | ConvertTo-Json -Depth 100 if ($PSCmdlet.ShouldProcess("Discovery scanner", "$($invokeParams.Method) $uri with:`n$($invokeParams.Body)`n")) { Write-Verbose "Performing the operation $($invokeParams.Method) $uri with:`n$($invokeParams.Body)`n" try { $apiResponse = Invoke-TssApi @invokeParams $restResponse = . $ProcessResponse $apiResponse } catch { Write-Warning 'Issue with New-TssDiscoveryScanner request' $err = $_ . $ErrorHandling $err } if ($restResponse) { [Thycotic.PowerShell.Discovery.Scanner](. $FilterTssResponse $restResponse ([Thycotic.PowerShell.Discovery.Scanner])) } } } else { Write-Warning 'No valid session found' } } } |