Public/SessionHost.ps1
Function Remove-NmeSessionHost { <# .SYNOPSIS Remove ARM session host. .DESCRIPTION Remove ARM session host. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/host/{hostName} endpoint of the NME REST API, using the delete method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool .PARAMETER HostName Name of AVD host .PARAMETER NmeRemoveSessionHostRequest Requires an NmeRemoveSessionHostRequest object, as generated by the New-NmeRemoveSessionHostRequest command. #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostName, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$True)][ValidateScript({if ($_.PSObject.TypeNames -contains "NmeRemoveSessionHostRequest"){$true} else{throw " is not a NmeRemoveSessionHostRequest object."}})]$NmeRemoveSessionHostRequest ) Set-NmeAuthHeaders Try { $json = $NmeRemoveSessionHostRequest | ConvertTo-Json -Depth 20 Write-Debug 'json:' Write-Debug $json $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/host/$HostName$QueryString" -Method delete -Headers $script:AuthHeaders -ContentType 'application/json' -body $json Write-Verbose ($result | out-string) $Result.PSObject.TypeNames.Insert(0, 'NmeResponseWithJob') $Result | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostName' -NotePropertyValue $hostName -erroraction 'SilentlyContinue' $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function Get-NmeSessionHost { <# .SYNOPSIS Get ARM session host by name. .DESCRIPTION Get ARM session host by name. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/host/{hostname} endpoint of the NME REST API, using the get method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool .PARAMETER Hostname Name of AVD host #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$Hostname ) Set-NmeAuthHeaders Try { $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/host/$Hostname$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json' $Result.PSObject.TypeNames.Insert(0, 'NmeArmSessionHost') $Result | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostname' -NotePropertyValue $hostname -erroraction 'SilentlyContinue' $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function Get-NmeSessionHostByAssignedUser { <# .SYNOPSIS Get ARM session host by assigned user. .DESCRIPTION Get ARM session host by assigned user. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/user/{username}/host endpoint of the NME REST API, using the get method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool .PARAMETER Username Username of assigned user #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$Username ) Set-NmeAuthHeaders Try { $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/user/$Username/host$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json' $Result.PSObject.TypeNames.Insert(0, 'NmeArmSessionHost') $Result | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'username' -NotePropertyValue $username -erroraction 'SilentlyContinue' $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function Get-NmeHostPoolSessionHosts { <# .SYNOPSIS Get ARM host pool session hosts. .DESCRIPTION Get ARM host pool session hosts. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/host endpoint of the NME REST API, using the get method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName ) Set-NmeAuthHeaders Try { $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/host$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json' $Result.PSObject.TypeNames.Insert(0, 'NmeArmSessionHost') $Result | ForEach-Object {$_ | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue'} $Result | ForEach-Object {$_ | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue'} $Result | ForEach-Object {$_ | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue'} $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function New-NmeSessionHost { <# .SYNOPSIS Create ARM session host. .DESCRIPTION ### To choose more than one user to assign them to hosts in personal pool, write them in "userToAssign" field and separate them with comma [,].. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/host endpoint of the NME REST API, using the post method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool .PARAMETER NmeCreateSessionHostRequest Requires an NmeCreateSessionHostRequest object, as generated by the New-NmeCreateSessionHostRequest command. #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$True)][ValidateScript({if ($_.PSObject.TypeNames -contains "NmeCreateSessionHostRequest"){$true} else{throw " is not a NmeCreateSessionHostRequest object."}})]$NmeCreateSessionHostRequest ) Set-NmeAuthHeaders Try { $json = $NmeCreateSessionHostRequest | ConvertTo-Json -Depth 20 Write-Debug 'json:' Write-Debug $json $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/host$QueryString" -Method post -Headers $script:AuthHeaders -ContentType 'application/json' -body $json Write-Verbose ($result | out-string) $Result.PSObject.TypeNames.Insert(0, 'NmeResponseWithMultipleJobs_BackwardCompatibility') $Result | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue' $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function Get-NmeWorkspaceSessionHost { <# .SYNOPSIS Get ARM workspace session hosts. .DESCRIPTION Get ARM workspace session hosts. This function calls the /api/v1/arm/workspace/{subscriptionId}/{resourceGroup}/{workspaceName}/host endpoint of the NME REST API, using the get method. .PARAMETER SubscriptionId The id (guid) of the subscription where this workspace resides .PARAMETER ResourceGroup The Azure resource group where the workspace resides .PARAMETER WorkspaceName Name of the AVD Workspace .PARAMETER Username Username of assigned user #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$WorkspaceName, [Parameter(ValueFromPipelineByPropertyName=$true)][string]$Username ) Set-NmeAuthHeaders Try { $QueryString = '?' $QueryStrings = @{} $QueryStrings += @{username= $username} $QueryString += ($QueryStrings.GetEnumerator() | % { "$($_.Key)=$($_.Value)" }) -join '&' $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/workspace/$SubscriptionId/$ResourceGroup/$WorkspaceName/host$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json' $Result.PSObject.TypeNames.Insert(0, 'NmeArmSessionHost') $Result | ForEach-Object {$_ | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue'} $Result | ForEach-Object {$_ | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue'} $Result | ForEach-Object {$_ | Add-Member -NotePropertyName 'workspaceName' -NotePropertyValue $workspaceName -erroraction 'SilentlyContinue'} $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function Start-NmeSessionHostReimageJob { <# .SYNOPSIS Re-image ARM session host VM. .DESCRIPTION Re-image ARM session host VM. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/host/{hostName}/reimage endpoint of the NME REST API, using the post method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool .PARAMETER HostName Name of AVD host .PARAMETER NmeReimageHostRequest Requires an NmeReimageHostRequest object, as generated by the New-NmeReimageHostRequest command. #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostName, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$True)][ValidateScript({if ($_.PSObject.TypeNames -contains "NmeReimageHostRequest"){$true} else{throw " is not a NmeReimageHostRequest object."}})]$NmeReimageHostRequest ) Set-NmeAuthHeaders Try { $json = $NmeReimageHostRequest | ConvertTo-Json -Depth 20 Write-Debug 'json:' Write-Debug $json $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/host/$HostName/reimage$QueryString" -Method post -Headers $script:AuthHeaders -ContentType 'application/json' -body $json Write-Verbose ($result | out-string) $Result.PSObject.TypeNames.Insert(0, 'NmeResponseWithJob') $Result | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostName' -NotePropertyValue $hostName -erroraction 'SilentlyContinue' $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function Set-NmeSessionHostPowerState { <# .SYNOPSIS Start, restart or stop ARM session host VM. .DESCRIPTION Start, restart or stop ARM session host VM. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/host/{hostname}/power-state endpoint of the NME REST API, using the post method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool .PARAMETER Hostname Name of AVD host .PARAMETER NmePowerStateCommandRequest Requires an NmePowerStateCommandRequest object, as generated by the New-NmePowerStateCommandRequest command. #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$Hostname, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$True)][ValidateScript({if ($_.PSObject.TypeNames -contains "NmePowerStateCommandRequest"){$true} else{throw " is not a NmePowerStateCommandRequest object."}})]$NmePowerStateCommandRequest ) Set-NmeAuthHeaders Try { $json = $NmePowerStateCommandRequest | ConvertTo-Json -Depth 20 Write-Debug 'json:' Write-Debug $json $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/host/$Hostname/power-state$QueryString" -Method post -Headers $script:AuthHeaders -ContentType 'application/json' -body $json Write-Verbose ($result | out-string) $Result.PSObject.TypeNames.Insert(0, 'NmeResponseWithJob') $Result | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostname' -NotePropertyValue $hostname -erroraction 'SilentlyContinue' $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } Function Set-NmeUserSessionHostPowerState { <# .SYNOPSIS Start, restart or stop ARM personal session host VM. .DESCRIPTION Start, restart or stop ARM personal session host VM. This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/user/{username}/host/power-state endpoint of the NME REST API, using the post method. .PARAMETER SubscriptionId The id (guid) of the subscription where this hostpool resides .PARAMETER ResourceGroup The Azure resource group where the hostpool resides .PARAMETER HostPoolName The name of the Host Pool .PARAMETER Username Username of assigned user .PARAMETER NmePowerStateCommandRequest Requires an NmePowerStateCommandRequest object, as generated by the New-NmePowerStateCommandRequest command. #> [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$SubscriptionId, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$ResourceGroup, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$HostPoolName, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][string]$Username, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$True)][ValidateScript({if ($_.PSObject.TypeNames -contains "NmePowerStateCommandRequest"){$true} else{throw " is not a NmePowerStateCommandRequest object."}})]$NmePowerStateCommandRequest ) Set-NmeAuthHeaders Try { $json = $NmePowerStateCommandRequest | ConvertTo-Json -Depth 20 Write-Debug 'json:' Write-Debug $json $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/user/$Username/host/power-state$QueryString" -Method post -Headers $script:AuthHeaders -ContentType 'application/json' -body $json Write-Verbose ($result | out-string) $Result.PSObject.TypeNames.Insert(0, 'NmeResponseWithJob') $Result | Add-Member -NotePropertyName 'subscriptionId' -NotePropertyValue $subscriptionId -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'resourceGroup' -NotePropertyValue $resourceGroup -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'hostPoolName' -NotePropertyValue $hostPoolName -erroraction 'SilentlyContinue' $Result | Add-Member -NotePropertyName 'username' -NotePropertyValue $username -erroraction 'SilentlyContinue' $Result | CapProps } Catch { $message = ParseErrorForResponseBody($_) write-error ($message | out-string) } } |