public/Stop-UnraidContainer.ps1
|
function Stop-UnraidContainer { <# .SYNOPSIS Stops a container. .PARAMETER InputObject Container to stop (accepts pipeline). .PARAMETER Name Container name. .PARAMETER Session Unraid session (defaults to current session). .EXAMPLE Stop-UnraidContainer -Name "plex" .EXAMPLE Get-UnraidContainer | Where-Object { $_.State -eq "running" } | Stop-UnraidContainer #> [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = "ByName")] [OutputType('void')] param( [Parameter(Mandatory, ParameterSetName = "ByObject", ValueFromPipeline)] [UnraidContainer[]]$InputObject, [Parameter(Mandatory, ParameterSetName = "ByName", Position = 0)] [string]$Name, [Parameter()] [UnraidSession]$Session = $script:DefaultUnraidSession ) process { $containers = Resolve-UnraidContainer -InputObject $InputObject -Name $Name -ParameterSetName $PSCmdlet.ParameterSetName -Session $Session if (!$containers) { return } foreach ($container in $containers) { if ($container.State -ne "running") { Write-Verbose "Container '$($container.Name)' is not running." continue } Invoke-UnraidStateChange -Id $container.Id -Name $container.Name -Action 'stop' -Type 'docker' -Session $Session -Cmdlet $PSCmdlet } } } |