Public/HostPool.ps1

Function Remove-NmeHostPool {
    <#
 
    .SYNOPSIS
 
    Delete ARM host pool.
 
    .DESCRIPTION
 
    Delete ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName} 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
 
    #>


    [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$Querystring" -Method delete -Headers $script:AuthHeaders -ContentType 'application/json'
        $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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function Get-NmeHostPool {
    <#
 
    .SYNOPSIS
 
    Get ARM host pool.
 
    .DESCRIPTION
 
    Get ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName} 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$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeArmHostpool')
        $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 New-NmeHostPool {
    <#
 
    .SYNOPSIS
 
    Create static host pool.
 
    .DESCRIPTION
 
    ## Notes
- Either *pooledParams* or *personalParams* property must be specified
- *isDesktop = true* will create pool with Desktop Application Group
- *isDesktop = false* will create pool with RemoteApp Application Group
- *isSingleUser = true* will set session limit to 1 per each host in pool
- *isSingleUser = false* will set session limit to 999999 per each host in pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName} 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 NmeCreateArmHostPoolRequest
 
    Requires an NmeCreateArmHostPoolRequest object, as generated by the New-NmeCreateArmHostPoolRequest 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 "NmeCreateArmHostPoolRequest"){$true} else{throw " is not a NmeCreateArmHostPoolRequest object."}})]$NmeCreateArmHostPoolRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeCreateArmHostPoolRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName$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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function Get-NmeHostPoolAutoScaleConfig {
    <#
 
    .SYNOPSIS
 
    Get autoscale config for ARM host pool.
 
    .DESCRIPTION
 
    Get autoscale config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/auto-scale 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/auto-scale$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $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 = $Result | CapProps
        $Result.AutoScaleTriggers = @($result.autoScaleTriggers)
        if ($Result.RollingDrainMode.Windows -eq $null) {
            $result = ($result | select -Property *  -ExcludeProperty RollingDrainMode)
        }
        $Result.PSObject.TypeNames.Insert(0, 'NmeDynamicPoolConfiguration')
        $result
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function Update-NmeHostPoolAutoScaleConfig {
    <#
 
    .SYNOPSIS
 
    Enable/disable autoscale for ARM host pool.
 
    .DESCRIPTION
 
    Enable/disable autoscale for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/auto-scale endpoint of the NME REST API, using the patch 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 NmeUpdateAutoScaleRequest
 
    Requires an NmeUpdateAutoScaleRequest object, as generated by the New-NmeUpdateAutoScaleRequest 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 "NmeUpdateAutoScaleRequest"){$true} else{throw " is not a NmeUpdateAutoScaleRequest object."}})]$NmeUpdateAutoScaleRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeUpdateAutoScaleRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/auto-scale$QueryString" -Method patch -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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function ConvertTo-NmeDynamicHostPool {
    <#
 
    .SYNOPSIS
 
    Convert static ARM host pool to dynamic.
 
    .DESCRIPTION
 
    Convert static ARM host pool to dynamic.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/auto-scale 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
 
    #>


    [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/auto-scale$Querystring" -Method post -Headers $script:AuthHeaders -ContentType 'application/json'
        $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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function Set-NmeHostPoolAutoScaleConfig {
    <#
 
    .SYNOPSIS
 
    Update autoscale config for ARM host pool.
 
    .DESCRIPTION
 
    Update autoscale config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/auto-scale endpoint of the NME REST API, using the put 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 MultiTriggers
 
    Enable to use multiple Autoscale triggers
 
    .PARAMETER AutoHealActions
 
    Enables AutoHeal actions for host pool
 
    .PARAMETER NmeDynamicPoolConfiguration
 
    Requires an NmeDynamicPoolConfiguration object, as generated by the New-NmeDynamicPoolConfiguration 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(ValueFromPipelineByPropertyName=$true)][boolean]$MultiTriggers,
        [Parameter(ValueFromPipelineByPropertyName=$true)][boolean]$AutoHealActions,
        [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$True)][ValidateScript({if ($_.PSObject.TypeNames -contains "NmeDynamicPoolConfiguration"){$true} else{throw " is not a NmeDynamicPoolConfiguration object."}})][psobject[]]$NmeDynamicPoolConfiguration
    )
    Set-NmeAuthHeaders
    Try {
        $QueryString = '?'
        $QueryStrings = @{}
        $QueryStrings += @{multiTriggers= $multiTriggers}
        $QueryStrings += @{autoHealActions= $autoHealActions}
        $QueryString += ($QueryStrings.GetEnumerator() | % { "$($_.Key)=$($_.Value)" }) -join '&'
        $json = $NmeDynamicPoolConfiguration | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/auto-scale$QueryString" -Method put -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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function Get-NmeHostPoolScheduledReimageJob {
    <#
 
    .SYNOPSIS
 
    Get scheduled re-image job params for ARM host pool.
 
    .DESCRIPTION
 
    Get scheduled re-image job params for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/schedule/reimage/job-params 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/schedule/reimage/job-params$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeReimageScheduledBulkJobParams')
        $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-NmeHostPoolScheduledScriptConfig {
    <#
 
    .SYNOPSIS
 
    Get scheduled script execution job params for ARM host pool.
 
    .DESCRIPTION
 
    Get scheduled script execution job params for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/schedule/script-execution/job-params 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/schedule/script-execution/job-params$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeRunScriptScheduledBulkJobParams')
        $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-NmeHostPoolADConfig {
    <#
 
    .SYNOPSIS
 
    Get Active Directory configuration for ARM host pool.
 
    .DESCRIPTION
 
    Get Active Directory configuration for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/active-directory 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/active-directory$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolActiveDirectoryRestModel')
        $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 Set-NmeHostPoolADConfig {
    <#
 
    .SYNOPSIS
 
    Update Active Directory configuration for ARM host pool.
 
    .DESCRIPTION
 
    Update Active Directory configuration for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/active-directory endpoint of the NME REST API, using the put 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 NmeUpdateHostPoolActiveDirectoryRestModel
 
    Requires an NmeUpdateHostPoolActiveDirectoryRestModel object, as generated by the New-NmeUpdateHostPoolActiveDirectoryRestModel 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 "NmeUpdateHostPoolActiveDirectoryRestModel"){$true} else{throw " is not a NmeUpdateHostPoolActiveDirectoryRestModel object."}})]$NmeUpdateHostPoolActiveDirectoryRestModel
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeUpdateHostPoolActiveDirectoryRestModel | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/active-directory$QueryString" -Method put -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolActiveDirectoryRestModel')
        $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-NmeHostPoolFslConfig {
    <#
 
    .SYNOPSIS
 
    Get FSLogix config for ARM host pool.
 
    .DESCRIPTION
 
    Get FSLogix config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/fslogix 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/fslogix$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolFsLogixRestModel')
        $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 Set-NmeHostPoolFslConfig {
    <#
 
    .SYNOPSIS
 
    Update FSLogix config for ARM host pool.
 
    .DESCRIPTION
 
    Update FSLogix config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/fslogix endpoint of the NME REST API, using the put 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 NmeUpdateHostPoolFsLogixRestModel
 
    Requires an NmeUpdateHostPoolFsLogixRestModel object, as generated by the New-NmeUpdateHostPoolFsLogixRestModel 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 "NmeUpdateHostPoolFsLogixRestModel"){$true} else{throw " is not a NmeUpdateHostPoolFsLogixRestModel object."}})]$NmeUpdateHostPoolFsLogixRestModel
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeUpdateHostPoolFsLogixRestModel | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/fslogix$QueryString" -Method put -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolFsLogixRestModel')
        $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-NmeHostPoolAVDConfig {
    <#
 
    .SYNOPSIS
 
    Get AVD properties for ARM host pool.
 
    .DESCRIPTION
 
    Get AVD properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/wvd 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/wvd$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeArmHostPoolPropertiesRestModel')
        $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 Set-NmeHostPoolAVDConfig {
    <#
 
    .SYNOPSIS
 
    Update AVD properties for ARM host pool.
 
    .DESCRIPTION
 
    Update AVD properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/wvd endpoint of the NME REST API, using the patch 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 NmeArmHostPoolPropertiesRestModel
 
    Requires an NmeArmHostPoolPropertiesRestModel object, as generated by the New-NmeArmHostPoolPropertiesRestModel 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 "NmeArmHostPoolPropertiesRestModel"){$true} else{throw " is not a NmeArmHostPoolPropertiesRestModel object."}})]$NmeArmHostPoolPropertiesRestModel
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeArmHostPoolPropertiesRestModel | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/wvd$QueryString" -Method patch -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeArmHostPoolPropertiesRestModel')
        $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-NmeVmDeploymentConfig {
    <#
 
    .SYNOPSIS
 
    Get host deployment config for ARM host pool.
 
    .DESCRIPTION
 
    Get host deployment config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/vm-deployment 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/vm-deployment$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolVmDeploymentRestModel')
        $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 Update-NmeVmDeploymentConfig {
    <#
 
    .SYNOPSIS
 
    Patch host deployment config for ARM host pool.
 
    .DESCRIPTION
 
    Patch host deployment config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/vm-deployment endpoint of the NME REST API, using the patch 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 NmeHostPoolVmDeploymentRestModel
 
    Requires an NmeHostPoolVmDeploymentRestModel object, as generated by the New-NmeHostPoolVmDeploymentRestModel 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 "NmeHostPoolVmDeploymentRestModel"){$true} else{throw " is not a NmeHostPoolVmDeploymentRestModel object."}})]$NmeHostPoolVmDeploymentRestModel
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeHostPoolVmDeploymentRestModel | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/vm-deployment$QueryString" -Method patch -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolVmDeploymentRestModel')
        $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 Set-NmeVmDeploymentConfig {
    <#
 
    .SYNOPSIS
 
    Update host deployment config for ARM host pool.
 
    .DESCRIPTION
 
    Update host deployment config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/vm-deployment endpoint of the NME REST API, using the put 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 NmeHostPoolVmDeploymentRestPutRequest
 
    Requires an NmeHostPoolVmDeploymentRestPutRequest object, as generated by the New-NmeHostPoolVmDeploymentRestPutRequest 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 "NmeHostPoolVmDeploymentRestPutRequest"){$true} else{throw " is not a NmeHostPoolVmDeploymentRestPutRequest object."}})]$NmeHostPoolVmDeploymentRestPutRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeHostPoolVmDeploymentRestPutRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/vm-deployment$QueryString" -Method put -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolVmDeploymentRestModel')
        $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-NmeHostPoolSessionTimeoutConfig {
    <#
 
    .SYNOPSIS
 
    Get session timeout config for ARM host pool.
 
    .DESCRIPTION
 
    Get session timeout config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/session-timeout 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/session-timeout$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolSessionTimeoutRestModel')
        $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 Set-NmeHostPoolSessionTimeoutConfig {
    <#
 
    .SYNOPSIS
 
    Update session timeout config for ARM host pool.
 
    .DESCRIPTION
 
    Update session timeout config for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/session-timeout endpoint of the NME REST API, using the put 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 NmeHostPoolSessionTimeoutRestModel
 
    Requires an NmeHostPoolSessionTimeoutRestModel object, as generated by the New-NmeHostPoolSessionTimeoutRestModel 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 "NmeHostPoolSessionTimeoutRestModel"){$true} else{throw " is not a NmeHostPoolSessionTimeoutRestModel object."}})]$NmeHostPoolSessionTimeoutRestModel
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeHostPoolSessionTimeoutRestModel | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/session-timeout$QueryString" -Method put -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolSessionTimeoutRestModel')
        $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-NmeHostPoolScheduledTasks {
    <#
 
    .SYNOPSIS
 
    Get scheduled tasks for ARM host pool.
 
    .DESCRIPTION
 
    Get scheduled tasks for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/schedule 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/schedule$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostpoolScheduleRestModel')
        $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-NmeHostPoolCustomTags {
    <#
 
    .SYNOPSIS
 
    Get custom tags for ARM host pool.
 
    .DESCRIPTION
 
    Get custom tags for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/tag 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/tag$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolTagsRest')
        $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 Set-NmeHostPoolCustomTags {
    <#
 
    .SYNOPSIS
 
    Update custom tags for ARM host pool.
 
    .DESCRIPTION
 
    Update custom tags for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/tag endpoint of the NME REST API, using the put 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 NmeUpdateHostPoolTagsRest
 
    Requires an NmeUpdateHostPoolTagsRest object, as generated by the New-NmeUpdateHostPoolTagsRest 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 "NmeUpdateHostPoolTagsRest"){$true} else{throw " is not a NmeUpdateHostPoolTagsRest object."}})]$NmeUpdateHostPoolTagsRest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeUpdateHostPoolTagsRest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/tag$QueryString" -Method put -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeUpdateHostPoolTagsResultRest')
        $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-NmeHostPoolRdpConfig {
    <#
 
    .SYNOPSIS
 
    Get RDP properties for ARM host pool.
 
    .DESCRIPTION
 
    Get RDP properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/rdp 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/rdp$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeArmHostPoolRdpModelRest')
        $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 Set-NmeHostPoolRdpConfig {
    <#
 
    .SYNOPSIS
 
    Update RDP properties for ARM host pool.
 
    .DESCRIPTION
 
    Update RDP properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/rdp endpoint of the NME REST API, using the put 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 NmeUpdateHostPoolRdpWithConfigRequest
 
    Requires an NmeUpdateHostPoolRdpWithConfigRequest object, as generated by the New-NmeUpdateHostPoolRdpWithConfigRequest 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 "NmeUpdateHostPoolRdpWithConfigRequest"){$true} else{throw " is not a NmeUpdateHostPoolRdpWithConfigRequest object."}})]$NmeUpdateHostPoolRdpWithConfigRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeUpdateHostPoolRdpWithConfigRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/rdp$QueryString" -Method put -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeArmHostPoolRdpModelRest')
        $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-NmeHostPoolUsageTracking {
    <#
 
    .SYNOPSIS
 
    Get usage tracking properties for ARM host pool.
 
    .DESCRIPTION
 
    Get usage tracking properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/tracking 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/tracking$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolTrackingModelRest')
        $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 Set-NmeHostPoolUsageTracking {
    <#
 
    .SYNOPSIS
 
    Update usage tracking properties for ARM host pool.
 
    .DESCRIPTION
 
    Update usage tracking properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/tracking endpoint of the NME REST API, using the patch 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 NmeHostPoolTrackingModelRest
 
    Requires an NmeHostPoolTrackingModelRest object, as generated by the New-NmeHostPoolTrackingModelRest 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 "NmeHostPoolTrackingModelRest"){$true} else{throw " is not a NmeHostPoolTrackingModelRest object."}})]$NmeHostPoolTrackingModelRest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeHostPoolTrackingModelRest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/tracking$QueryString" -Method patch -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolTrackingModelRest')
        $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-NmeHostPoolBackupConfig {
    <#
 
    .SYNOPSIS
 
    Get backup properties for ARM host pool.
 
    .DESCRIPTION
 
    Get backup properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/backup 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/backup$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolBackupModelRest')
        $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 Set-NmeHostPoolBackupConfig {
    <#
 
    .SYNOPSIS
 
    Update backup properties for ARM host pool.
 
    .DESCRIPTION
 
    Update backup properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/backup endpoint of the NME REST API, using the patch 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 NmeHostPoolBackupModelRest
 
    Requires an NmeHostPoolBackupModelRest object, as generated by the New-NmeHostPoolBackupModelRest 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 "NmeHostPoolBackupModelRest"){$true} else{throw " is not a NmeHostPoolBackupModelRest object."}})]$NmeHostPoolBackupModelRest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeHostPoolBackupModelRest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/backup$QueryString" -Method patch -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolBackupModelRest')
        $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-NmeHostPoolSelfServiceConfig {
    <#
 
    .SYNOPSIS
 
    Get user self-service properties for ARM host pool.
 
    .DESCRIPTION
 
    Get user self-service properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/user-self-service 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/user-self-service$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolUserSelfServiceModelRest')
        $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 Set-NmeHostPoolSelfServiceConfig {
    <#
 
    .SYNOPSIS
 
    Update user self-service properties for ARM host pool.
 
    .DESCRIPTION
 
    Update user self-service properties for ARM host pool.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/user-self-service endpoint of the NME REST API, using the patch 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 NmeHostPoolUserSelfServiceModelRest
 
    Requires an NmeHostPoolUserSelfServiceModelRest object, as generated by the New-NmeHostPoolUserSelfServiceModelRest 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 "NmeHostPoolUserSelfServiceModelRest"){$true} else{throw " is not a NmeHostPoolUserSelfServiceModelRest object."}})]$NmeHostPoolUserSelfServiceModelRest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeHostPoolUserSelfServiceModelRest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/user-self-service$QueryString" -Method patch -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolUserSelfServiceModelRest')
        $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-NmeControlUpModel {
    <#
 
    .SYNOPSIS
 
    .
 
    .DESCRIPTION
 
    .
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/controlup 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/controlup$Querystring" -Method get -Headers $script:AuthHeaders -ContentType 'application/json'
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolControlUpRestModel')
        $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 Set-NmeControlUpModel {
    <#
 
    .SYNOPSIS
 
    .
 
    .DESCRIPTION
 
    .
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/controlup endpoint of the NME REST API, using the patch 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 NmePatchHostPoolControlUpRestModel
 
    Requires an NmePatchHostPoolControlUpRestModel object, as generated by the New-NmePatchHostPoolControlUpRestModel 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 "NmePatchHostPoolControlUpRestModel"){$true} else{throw " is not a NmePatchHostPoolControlUpRestModel object."}})]$NmePatchHostPoolControlUpRestModel
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmePatchHostPoolControlUpRestModel | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/controlup$QueryString" -Method patch -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeHostPoolControlUpRestModel')
        $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 New-NmeHostPoolReimageTask {
    <#
 
    .SYNOPSIS
 
    Re-image ARM host pool session hosts' VMs.
 
    .DESCRIPTION
 
    Re-image ARM host pool session hosts' VMs.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/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 NmeReimagePoolRequest
 
    Requires an NmeReimagePoolRequest object, as generated by the New-NmeReimagePoolRequest 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 "NmeReimagePoolRequest"){$true} else{throw " is not a NmeReimagePoolRequest object."}})]$NmeReimagePoolRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeReimagePoolRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function New-NmeHostPoolScheduleReimageTask {
    <#
 
    .SYNOPSIS
 
    Schedule re-image ARM host pool session hosts' VMs.
 
    .DESCRIPTION
 
    Schedule re-image ARM host pool session hosts' VMs.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/schedule/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 NmeScheduleReimagePoolRestPayload
 
    Requires an NmeScheduleReimagePoolRestPayload object, as generated by the New-NmeScheduleReimagePoolRestPayload 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 "NmeScheduleReimagePoolRestPayload"){$true} else{throw " is not a NmeScheduleReimagePoolRestPayload object."}})]$NmeScheduleReimagePoolRestPayload
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeScheduleReimagePoolRestPayload | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/schedule/reimage$QueryString" -Method post -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeReimageScheduledBulkJobParams')
        $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 New-NmeHostPoolScriptTask {
    <#
 
    .SYNOPSIS
 
    Run script on ARM host pool session hosts' VMs.
 
    .DESCRIPTION
 
    Run script on ARM host pool session hosts' VMs.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/script-execution 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 NmeRunHostPoolScriptRestRequest
 
    Requires an NmeRunHostPoolScriptRestRequest object, as generated by the New-NmeRunHostPoolScriptRestRequest 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 "NmeRunHostPoolScriptRestRequest"){$true} else{throw " is not a NmeRunHostPoolScriptRestRequest object."}})]$NmeRunHostPoolScriptRestRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeRunHostPoolScriptRestRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/script-execution$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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function New-NmeHostPoolScriptedActionSchedule {
    <#
 
    .SYNOPSIS
 
    Schedule script execution on ARM host pool session hosts' VMs.
 
    .DESCRIPTION
 
    Schedule script execution on ARM host pool session hosts' VMs.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/schedule/script-execution 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 NmeScheduleHostPoolScriptRestPayload
 
    Requires an NmeScheduleHostPoolScriptRestPayload object, as generated by the New-NmeScheduleHostPoolScriptRestPayload 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 "NmeScheduleHostPoolScriptRestPayload"){$true} else{throw " is not a NmeScheduleHostPoolScriptRestPayload object."}})]$NmeScheduleHostPoolScriptRestPayload
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeScheduleHostPoolScriptRestPayload | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/schedule/script-execution$QueryString" -Method post -Headers $script:AuthHeaders -ContentType 'application/json' -body $json
        Write-Verbose ($result | out-string)
        $Result.PSObject.TypeNames.Insert(0, 'NmeRunScriptScheduledBulkJobParams')
        $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 New-NmeHostPoolUserAssignment {
    <#
 
    .SYNOPSIS
 
    Assign users and/or groups to ARM host pool.
 
    .DESCRIPTION
 
    ## Notes
- **Users** can be either an array of principals or GUIDs
- **Groups** can be an array of GUID only.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/assign 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 NmeArmHostPoolAssignmentRequest
 
    Requires an NmeArmHostPoolAssignmentRequest object, as generated by the New-NmeArmHostPoolAssignmentRequest 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 "NmeArmHostPoolAssignmentRequest"){$true} else{throw " is not a NmeArmHostPoolAssignmentRequest object."}})]$NmeArmHostPoolAssignmentRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeArmHostPoolAssignmentRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/assign$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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}
Function New-NmeHostPoolUserUnassignment {
    <#
 
    .SYNOPSIS
 
    Unassign users and/or groups from ARM host pool.
 
    .DESCRIPTION
 
    ## Notes
- **Users** can be either an array of principals or GUIDs
- **Groups** can be an array of GUID only.
 
    This function calls the /api/v1/arm/hostpool/{subscriptionId}/{resourceGroup}/{hostPoolName}/unassign 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 NmeArmHostPoolAssignmentRequest
 
    Requires an NmeArmHostPoolAssignmentRequest object, as generated by the New-NmeArmHostPoolAssignmentRequest 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 "NmeArmHostPoolAssignmentRequest"){$true} else{throw " is not a NmeArmHostPoolAssignmentRequest object."}})]$NmeArmHostPoolAssignmentRequest
    )
    Set-NmeAuthHeaders
    Try {
        $json = $NmeArmHostPoolAssignmentRequest | ConvertTo-Json -Depth 20
        Write-Debug 'json:'
        Write-Debug $json
        $Result = Invoke-RestMethod "$script:NmeUri/api/v1/arm/hostpool/$SubscriptionId/$ResourceGroup/$HostPoolName/unassign$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 | CapProps
    }
    Catch {
        $message = ParseErrorForResponseBody($_)
        write-error ($message | out-string)
    }
}