Public/UserSession.ps1

Function Get-NmeHostPoolSessions {
    <#

    .SYNOPSIS

    Get ARM host pool user sessions.

    .DESCRIPTION

    Get ARM host pool user sessions.

    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/session 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

    .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(ValueFromPipelineByPropertyName=$true)][string]$Hostname,
        [Parameter(ValueFromPipelineByPropertyName=$true)][string]$Username
    )
    Set-NmeAuthHeaders
    Try {
        $QueryString = '?'
        $QueryStrings = @{}
        $QueryStrings += @{hostname= $hostname}
        $QueryStrings += @{username= $username}
        $QueryString += ($QueryStrings.GetEnumerator() | % { "$($_.Key)=$($_.Value)" }) -join '&'
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/session$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeArmSession')
        $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 Get-NmeWorkspaceSessions {
    <#

    .SYNOPSIS

    Get ARM workspace user sessions.

    .DESCRIPTION

    Get ARM workspace user sessions.

    This function calls the /api/v1/arm/workspace/{subscriptionId}/{resourceGroup}/{workspaceName}/session 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 Hostname

    Name of AVD host

    .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]$Hostname,
        [Parameter(ValueFromPipelineByPropertyName=$true)][string]$Username
    )
    Set-NmeAuthHeaders
    Try {
        $QueryString = '?'
        $QueryStrings = @{}
        $QueryStrings += @{hostname= $hostname}
        $QueryStrings += @{username= $username}
        $QueryString += ($QueryStrings.GetEnumerator() | % { "$($_.Key)=$($_.Value)" }) -join '&'
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/workspace/$SubscriptionId/$ResourceGroup/$WorkspaceName/session$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeArmSession')
        $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 New-NmeHostPoolSessionAction {
    <#

    .SYNOPSIS

    Perform action for ARM host pool user session.

    .DESCRIPTION

    Perform action for ARM host pool user session.

    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/host/{hostname}/session/{sessionId}/action 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 SessionId

    The session id

    .PARAMETER NmeUserSessionActionRequest

    Requires an NmeUserSessionActionRequest object, as generated by the New-NmeUserSessionActionRequest 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)][string]$SessionId,
        [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$True)][ValidateScript({if ($_.PSObject.TypeNames -contains "NmeUserSessionActionRequest"){$true} else{throw " is not a NmeUserSessionActionRequest object."}})]$NmeUserSessionActionRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeUserSessionActionRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/host/$Hostname/session/$SessionId/action$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 | Add-Member -NotePropertyName 'sessionId' -NotePropertyValue $sessionId -erroraction 'SilentlyContinue'
        $Result | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}