Public/Set-DuneDeploymentLifetime.ps1
|
function Set-DuneDeploymentLifetime { [CmdletBinding( SupportsShouldProcess, ConfirmImpact = 'None', DefaultParameterSetName = "Id_ValidUntil" )] param ( [Parameter(Mandatory, ParameterSetName = "Id_ValidUntil")] [Parameter(Mandatory, ParameterSetName = "Id_NeverExpires")] [guid]$Id, [Parameter(Mandatory, ValueFromPipeline, ParameterSetName = "Object_ValidUntil")] [Parameter(Mandatory, ValueFromPipeline, ParameterSetName = "Object_NeverExpires")] [DuneDeployment]$Deployment, [Parameter(Mandatory, ParameterSetName = "Id_ValidUntil")] [Parameter(Mandatory, ParameterSetName = "Object_ValidUntil")] [DateTime]$ValidUntil, [Parameter(Mandatory, ParameterSetName = "Id_NeverExpires")] [Parameter(Mandatory, ParameterSetName = "Object_NeverExpires")] [switch]$NeverExpires, [Parameter()] [switch]$SuppressOwnerNotification, [Parameter()] [string]$TxId ) begin {} process { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)" switch ($PSCmdlet.ParameterSetName) { {$_ -like "Id_*"} { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($Id)" $Deployment = Get-DuneDeployment -Id $Id } {$_ -like "Object_*"} { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($Deployment.Id)" } Default { return } } if ($ValidUntil) { if ($PSCmdlet.ShouldProcess($Deployment.Name)) { if ($Deployment.IsNeverExpiring) { $Url = $("deployments/{0}/neverexpires" -f $Deployment.Id) $Body = @{ IsNeverExpiring = $false SendNotifications = $false } $Null = Invoke-DuneApiRequest $Url -Method PATCH -Body $Body } $Url = $("deployments/{0}/lifetime/extend" -f $Deployment.Id) $Body = @{ ValidTo = $ValidUntil SendNotifications = if($SuppressOwnerNotification){$false}else{$true} } $Null = Invoke-DuneApiRequest $Url -Method PATCH -Body $Body } } if ($NeverExpires) { if ($PSCmdlet.ShouldProcess($Deployment.Name)) { $Url = $("deployments/{0}/neverexpires" -f $Deployment.Id) $Body = @{ IsNeverExpiring = $true SendNotifications = if($SuppressOwnerNotification){$false}else{$true} } $Null = Invoke-DuneApiRequest $Url -Method PATCH -Body $Body } } } end {} } |