RDSModule.psm1

        <#
        .SYNOPSIS
        Get Remote Desktop Status from Remote Computers.
        .DESCRIPTION
        Get Remote Desktop Status from Remote Computers.
 
        .PARAMETER ComputerName
        Specifies the computername.
 
        .PARAMETER ComputerName
        Specify the Computer Name where you want to check remote desktop status
 
 
        .EXAMPLE
        Get-RemoteDesktopStatus -ComputerName s1.mixazure.com
 
        .EXAMPLE
        "s1.mixazure.com" | Get-RemoteDesktopStatus
 
        .LINK
        https://www.microsoft.com
        #>

Function Get-RemoteDesktopStatus{
    Param(
        [Parameter(
         Mandatory=$true,
         Position=0,
         ValueFromPipeline=$True)]
        [String[]]$ComputerName
    )
    Begin{
    }
    Process{
    Get-CimInstance -ComputerName $ComputerName -Namespace root\CIMV2\TerminalServices -ClassName Win32_TerminalServiceSetting | Select-Object AllowTSConnections
    }
    End{
    }
}

        <#
        .SYNOPSIS
        Enable or disable remote desktop for remote computer.
        .DESCRIPTION
        Enable or disable remote desktop for remote computer.You can input sigle computername or multiple computernames.
 
        .PARAMETER ComputerName
        Specifies the computername.
 
        .PARAMETER AllowTSConnections
        1 for enable remote desktop,0 for disable remote desktop
 
        .PARAMETER AllowFirewallExpection
        1 for enable firewall rule,0 for disable firewall rule
 
        .PARAMETER Enabled
        $True for enable remote desktop and firewall rule,$False for disable remote desktop and firewall
 
        .EXAMPLE
        Set-RemoteDesktop -ComputerName s1.mixazure.com -Enabled $True
 
        .EXAMPLE
        Set-RemoteDesktop -ComputerName dc.mixazure.com,s1.mixazure.com,s2.mixazure.com -AllowTSConnections 1 -AllowFirewallExpection 1
 
        .LINK
        https://www.microsoft.com
        #>

Function Set-RemoteDesktop{
[CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="High")]
[cmdletbinding(DefaultParameterSetName="S1")]
Param(
    [Parameter(
            Mandatory=$True,
            Position=0,
            ValueFromPipeline=$True,
            ValueFromPipelineByPropertyName,
            ParameterSetName="S1")]
    [Parameter(
            Mandatory=$True,
            Position=0,
            ValueFromPipeline=$True,
            ValueFromPipelineByPropertyName,
            ParameterSetName="S2")]
            [Alias("DNSHostName","ServerName")]
            [String[]]$ComputerName,

    [Parameter(
            Mandatory=$True,
            Position=1,
            ParameterSetName="S1")]
            [ValidateSet(0,1)]
            [int]$AllowTSConnections,
    [Parameter(
            Mandatory=$True,
            Position=2,
            ParameterSetName="S1")]
            [ValidateSet(0,1)]
            [int]$AllowFirewallExpection,
    [Parameter(
            Mandatory=$True,
            Position=1,
            ParameterSetName="S2")]
            [ValidateSet(0,1)]
            [String]$Enabled
)

             Begin{
                    Write-Verbose "Start to Enable Remote Desktop for Remote Servers!"
    }
             Process{
                    Switch($PSCmdlet.ParameterSetName){
                    "S1"{
                            If($PSCmdlet.ShouldProcess($ComputerName,"Enable or Disable Remote Desktop")){
                            Get-CimInstance -ComputerName $ComputerName -Namespace root\CIMV2\TerminalServices -ClassName Win32_TerminalServiceSetting | Invoke-CimMethod -MethodName SetAllowTSConnections -Arguments @{ AllowTSConnections=$AllowTSConnections;ModifyFirewallException=$AllowFirewallExpection }
                            }
                        }

                     "S2"{
                           If($PSCmdlet.ShouldProcess($ComputerName,"Enable or Disable Remote Desktop")){
                           Get-CimInstance -ComputerName $ComputerName -Namespace root\CIMV2\TerminalServices -ClassName Win32_TerminalServiceSetting | Invoke-CimMethod -MethodName SetAllowTSConnections -Arguments @{ AllowTSConnections=$Enabled;ModifyFirewallException=1 }
                            }
                        }

                    }
                    
                   }
            End{
                    Write-Verbose "Finished!"
            }
}