Activar escritorio remoto mediante Powershell

Por defecto la conexión por escritorio remoto aparece deshabilitada en los equipos con Windows Pro, en una red de dominio es posible establecer mediante políticas de grupo los permisos necesarios:

- Configuración de Equipo \ Directivas \ Plantillas Administrativas
--- Componentes de Windows \ Servicios de escritorio remoto \ Host de sesión de Escritorio remoto \ Conexiones \ Permitir que los usuarios se conecten de forma remota mediante Servicios de Escritorio Remoto

--- Red \ Conexiones de red \ Firewall de Windows \ Perfil de dominio \ Firewall de Windows: permitir excepciones de Escritorio remoto entrantes

Igualmente podemos echar mano de un Script para powershell escrito por Sitaram Pamarthi en 2013, que mediante WMI nos facilita acciones puntuales:

[cmdletbinding()]
param(
	[parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
	[string[]]$ComputerName = $env:computername,
	[ValidateScript({Test-Path $_})]
	[string]$OutFolder = "c:\"
)

begin {
$SuccessComps = Join-Path $OutFolder "Successcomps.txt"
$FailedComps = Join-Path $OutFolder "FailedComps.txt"
}

process {
	foreach($Computer in $ComputerName) {

		try {
			$RDP = Get-WmiObject -Class Win32_TerminalServiceSetting `
								-Namespace root\CIMV2\TerminalServices `
								-Computer $Computer `
								-Authentication 6 `
								-ErrorAction Stop
								
		} catch {
			Write-Host "$Computer : WMIQueryFailed"
			"$Computer : WMIQueryFailed" | Out-File -FilePath $FailedComps -Append
			continue
		}
		
		if($RDP.AllowTSConnections -eq 1) {
			Write-Host "$Computer : RDP Already Enabled"
			"$Computer : RDP Already Enabled" | Out-File -FilePath $SuccessComps -Append
			continue
		} else {
			try {
				$result = $RDP.SetAllowTsConnections(1,1)
				if($result.ReturnValue -eq 0) {
					Write-Host "$Computer : Enabled RDP Successfully"
					"$Computer : RDP Enabled Successfully" | Out-File -FilePath $SuccessComps -Append
				} else {
					Write-Host "$Computer : Failed to enabled RDP"
					"$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append

				}
			
			} catch {
				Write-Host "$computer : Failed to enabled RDP"
				"$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append
			}
		}
	}

}

end {}

Su utilización para un equipo concreto:

.\Enable-RDPAccess.ps1 -ComputerName <computer name>

 Si obtenemos errores al ejectuarlo, debemos comprobar que tenemos acceso mediante WMI o activarlo mediante GPO:

- Configuración del equipo \ Directivas \ Configuración de Windows \ Configuración de seguridad \ Firewall de Windows con seguridad avanzada \ Reglas de Entrada


Automatizar instalación de roles y características en Windows Server

Cuando una tarea se vuelve repetitiva, siempre quedan opciones de agilizarlas; en el caso de la instalación de roles o características en Windows Server 2016, podemos exportar en un fichero XML desde la propia interfaz gráfica, si no estamos en modo core, para replicar o modificar en otro servidor:

En la parte inferior "Exportar opciones de configuración" genera un XML con las opciones que hemos seleccionado en el proceso: DeploymentConfig.xml

Por ejemplo, una parte sería:

<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Collections.ObjectModel.Collection`1[[System.Management.Automation.PSObject, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]</T>
      <T>System.Object</T>
    </TN>
    <LST>
      <Obj RefId="1">

.....

Si queremos replicar esta configuración mediante powershell en el mismo equipo:

Install-WindowsFeature –ConfigurationFilePath 
C:\DATOS\DeploymentConfigPlantilla.xml

O bien en otro equipo remoto:

Install-WindowsFeature –ConfigurationFilePath
C:\DATOS\PlantillaIIS.xml -ComputerName $nombreservidor

Podemos generalizar y modificar los ficheros para automatizar instalaciones en cualquier entorno Windows Server 2016

Más información: Documentación server-manager

 

Nombres de servicios en Windows

En ocasiones las traducciones de algunos servicios de Inglés a Español en los nombres de los servicios de windows, tanto para servidores como para clientes son algo... peculiares y no siempre se ajustan... podemos contrastarlos con los nombres cortos. Mediante PowerShell sacamos el listado completo:

Get-Service | Sort-Object -Property DisplayName | Format-Table DisplayName, Name -AutoSize 

En el caso de necesitar conocer que servicio, programa, proceso... tiene abierto un fichero determinado, podemos recurrir a la herramienta Process Explorer, pulsamos sobre "Find -> Find Handle or DLL..." con el nombre del fichero.

Una vez encontrado desde las propiedades podemos ver si tiene algún servicio asociado.