Functions/Get-GraylogSidecarConfigurationAssignment.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<#
.SYNOPSIS Get the assigned configuration for the graylog node and collector. .DESCRIPTION Invoke a web request on the Graylog API to get the currently assigned configuration for the specified node an collector. .EXAMPLE PS C:\> Get-GraylogSidecarConfigurationAssignment -Uri 'https://graylog.contoso.com/api' -Credential $cred -NodeId '99b5a37c-a277-444e-b8fd-c261c18ac5bd' -CollectorId '5d06f16771c02a78f6ed644f' Get the assigned configuration. #> function Get-GraylogSidecarConfigurationAssignment { [CmdletBinding()] [OutputType([System.String])] param ( [Parameter(Mandatory = $true)] [System.String] $Uri, [Parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $Credential, [Parameter(Mandatory = $true)] [System.String] $NodeId, [Parameter(Mandatory = $true)] [System.String] $CollectorId ) # Cerate basic authoriazion as base64 encoded string $auth = 'Basic {0}' -f [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(('{0}:{1}' -f $Credential.Username, $Credential.GetNetworkCredential().Password))) try { # Get the current graylog sidecar configuration, including assignments $graylogSidecarSplat = @{ Method = 'Get' Uri = '{0}/sidecars/{1}' -f $Uri.TrimEnd('/'), $NodeId Headers = @{ Authorization = $auth } } $graylogSidecar = Invoke-RestMethod @graylogSidecarSplat -ErrorAction 'Stop' # Filter all assignments for the desired collector $configurationId = $graylogSidecar.assignments | Where-Object { $_.collector_id -eq $CollectorId } | Select-Object -ExpandProperty 'configuration_id' -First 1 return [System.String] $configurationId } catch { Write-Warning $_ return '' } } |