public/Get-UnraidContainer.ps1
|
function Get-UnraidContainer { <# .SYNOPSIS Lists Docker containers. .PARAMETER Name Filter by name (supports wildcards). .PARAMETER Session Unraid session (defaults to current session). .EXAMPLE Get-UnraidContainer .EXAMPLE Get-UnraidContainer -Name "*arr" #> [CmdletBinding()] [OutputType("UnraidContainer")] param( [Parameter(Position = 0, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string[]]$Name, [Parameter()] [UnraidSession]$Session = $script:DefaultUnraidSession ) process { $gqlQuery = @" query DockerDetails { server { lanip } docker { containers { id names image imageId command created sizeRootFs state status autoStart labels networkSettings mounts hostConfig { networkMode } ports { publicPort privatePort type } } } } "@ $result = Invoke-UnraidQuery -Query $gqlQuery -Session $Session $serverIp = $result.server.lanip $containerList = [System.Collections.Generic.List[UnraidContainer]]::new() if ($result.docker.containers) { foreach ($containerData in $result.docker.containers) { $containerObj = [UnraidContainer]::new($containerData, $serverIp) $shouldOutput = $false if (!$Name) { $shouldOutput = $true } else { foreach ($filterName in $Name) { if ($containerObj.Name -like "*$filterName*") { $shouldOutput = $true break } } } if ($shouldOutput) { $containerList.Add($containerObj) } } } $containerList | Sort-Object Name } } |