Private/Invoke-W365CloudAppAction.ps1
|
function Invoke-W365CloudAppAction { [CmdletBinding()] param( [Parameter(Mandatory)] [object]$CloudApp, [string]$Action ) begin { Import-W365CliWindowsCloudPC } process { $endpointAction = switch ($Action) { 'Publish' { 'publish' } 'Unpublish' { 'unpublish' } default { $null } } if (-not $endpointAction) { return } Invoke-W365CloudPCConfirmedAction -CloudPC ([pscustomobject]@{ Name = $CloudApp.DisplayName }) -ActionName $Action -TargetType 'cloud app' -Context @{ CloudAppId = $CloudApp.Id Action = $endpointAction } -PreviewScript { param($Target, $Context) [pscustomobject]@{ CloudAppId = $Context.CloudAppId Action = $Context.Action Status = 'WhatIf' Endpoint = "/deviceManagement/virtualEndpoint/cloudApps/$($Context.Action)" } } -SubmitScript { param($Target, $Context) Connect-CloudPC -AdditionalScopes 'CloudPC.ReadWrite.All' | Out-Null $uri = "https://graph.microsoft.com/beta/deviceManagement/virtualEndpoint/cloudApps/$($Context.Action)" $body = @{ cloudAppIds = @($Context.CloudAppId) } | ConvertTo-Json -Depth 5 -Compress Invoke-MgGraphRequest -Method POST -Uri $uri -Body $body -ContentType 'application/json' | Out-Null [pscustomobject]@{ CloudAppId = $Context.CloudAppId Action = $Context.Action Status = 'Submitted' RequestedAt = [datetime]::Now } } $script:W365CliCloseDetailRequested = $true } end { } } |