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!" } } |