Public/Fleets/Set-FleetTeam.ps1
|
function Set-FleetTeam { <# .SYNOPSIS Updates a Fleet Premium fleet. .DESCRIPTION Sends PATCH /api/v1/fleet/fleets/{id}. Only supplied properties are included in the body. .PARAMETER Id Fleet ID. .PARAMETER Name New fleet name. .PARAMETER HostId Host IDs to assign to this fleet. Assignment uses POST /api/v1/fleet/hosts/transfer. .EXAMPLE Set-FleetTeam -Id 1 -Name "Engineering" .NOTES This cmdlet requires Fleet Premium. Fleet Free responds with HTTP 402. https://fleetdm.com/docs/rest-api/rest-api#update-fleet .LINK https://fleetdm.com/docs/rest-api/rest-api#update-fleet #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')] param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [ValidateRange(0, [int]::MaxValue)] [int]$Id, [ValidateNotNullOrEmpty()] [string]$Name, [int[]]$HostId ) process { $body = @{} if ($PSBoundParameters.ContainsKey('Name')) { $body['name'] = $Name } $assignHosts = $PSBoundParameters.ContainsKey('HostId') if ($body.Count -eq 0 -and -not $assignHosts) { Write-Warning "No updates specified for fleet ID $Id" return } if ($PSCmdlet.ShouldProcess("fleet $Id", 'Update')) { $fleet = $null if ($body.Count -gt 0) { $response = Invoke-FleetDMRequest -Endpoint "fleets/$Id" -Method PATCH -Body $body $fleet = Get-FleetRecord -Response $response } if ($assignHosts) { $null = Invoke-FleetDMRequest -Endpoint 'hosts/transfer' -Method POST -Body @{ fleet_id = $Id hosts = @($HostId) } } if (-not $fleet) { $response = Invoke-FleetDMRequest -Endpoint "fleets/$Id" -Method GET $fleet = Get-FleetRecord -Response $response } return $fleet } } } |