$computernames=@'
SERVER1
SERVER2
'@
$computers=@($computernames -split "`n" -replace "\..*$")
function enableRemoteDesktop{
$regHiveTs='HKLM:\System\CurrentControlSet\Control\Terminal Server'
$regKeyTs='fDenyTSConnections'
$enable=0
$currentValue=(get-itemproperty $regHiveTs).$regKeyTs
if($currentValue -ne $enable){
Set-ItemProperty -Path $regHiveTs -name 'fDenyTSConnections' $regKeyTs -value $enable
Disable-NetFirewallRule -DisplayGroup 'Remote Desktop'
$newValue=(get-itemproperty $regHiveTs).$regKeyTs
write-host "$env:computername`: $regHiveTs key $regKeyTs has been set to $enable"
}else{
write-host "$env:computername`: $regHiveTs key $regKeyTs is already set to $enable"
}
}
function disableRemoteDesktop{
$regHiveTs='HKLM:\System\CurrentControlSet\Control\Terminal Server'
$regKeyTs='fDenyTSConnections'
$disable=1
$currentValue=(get-itemproperty $regHiveTs).$regKeyTs
if($currentValue -ne $disable){
Set-ItemProperty -Path $regHiveTs -name 'fDenyTSConnections' $regKeyTs -value $disable
Disable-NetFirewallRule -DisplayGroup 'Remote Desktop'
$newValue=(get-itemproperty $regHiveTs).$regKeyTs
write-host "$env:computername`: $regHiveTs key $regKeyTs has been set to $disable"
}else{
write-host "$env:computername`: $regHiveTs key $regKeyTs is already set to $disable"
}
}
invoke-command -computername $computers -ScriptBlock{
param($enableRemoteDesktop)
[ScriptBlock]::Create($enableRemoteDesktop).invoke()
} -Args ${function:enableRemoteDesktop}
Categories: