Windows Server 2022 — Guía Completa | GPS-971.com

Windows Server 2022 — Guía Completa | GPS-971.com
▶ GPS-971.com · Guía Técnica 2026 Soporte hasta Oct 2031 Long-Term Servicing Channel

Windows Server 2022

Guía técnica exhaustiva de instalación, configuración inicial, roles y características, seguridad avanzada, automatización con PowerShell y mantenimiento preventivo para entornos empresariales modernos.

20Secciones técnicas
150+Comandos CMD/PS
3Ediciones cubiertas
Oct 2031Fin soporte extendido
AzureIntegración nativa
TLS 1.3Seguridad por defecto
ℹ️
Sobre esta guía: Cubre Windows Server 2022 en sus ediciones Standard, Datacenter y Datacenter: Azure Edition. Los comandos se ejecutan en PowerShell o CMD como Administrador salvo indicación contraria. Soporte extendido hasta octubre 2031.
⬛ NOVEDADES WS2022
🆕
00 · Introducción

Novedades y Mejoras vs. WS2019

Qué hay de nuevo en Windows Server 2022: seguridad, rendimiento, Hyper-V, contenedores y Azure.

Referencia
StandardDatacenterAzure Edition
🔐

Secured-Core Server

Hardware root of trust, virtualización de seguridad (VBS), Credential Guard habilitado por defecto y arranque seguro mejorado.

🌐

TLS 1.3 por defecto

TLS 1.3 activado de forma predeterminada. DNS sobre HTTPS (DoH) integrado. Conexiones SMB 3.1.1 comprimidas con AES-256.

SMB comprimido

Compresión de SMB reduce el tráfico de red hasta un 30%. Mejor rendimiento en transferencias de archivos grandes y en WANs.

🐳

Contenedores mejorados

Imágenes de contenedor más pequeñas (Server Core 4x más ligera). Compatibilidad con Windows Containers en Kubernetes.

☁️

Azure Arc nativo

Gestión híbrida con Azure Arc integrada. Azure Automanage, Policy, Defender for Cloud y Monitor directamente sobre servidores on-premises.

🗄️

Storage Spaces Direct

Mejoras en Storage Spaces Direct para Datacenter. Soporte para NVMe, persistente memory (PMem) y thin provisioning mejorado.

Tabla comparativa de ediciones

CaracterísticaStandardDatacenterAzure Edition
Licencia porCore 2+2 VMsCore + VMs ilimitadasAzure / BYOL
Hyper-V2 VMs incluidasIlimitadasIncluido
Storage Spaces Direct
Shielded VMs
Azure Hotpatch
SMB compresión
DNS sobre HTTPS
💡
¿Standard o Datacenter? Para la mayoría de PYMEs, Standard es suficiente. Datacenter se justifica cuando necesitas más de 2 VMs activas simultáneas, Storage Spaces Direct o características avanzadas de Hyper-V como Shielded VMs y live migration ilimitada.
⬛ PRE-INSTALACIÓN
📋
01 · Pre-instalación

Requisitos de Hardware y Preparación

Hardware mínimo y recomendado por edición, lista de verificación y preparación del entorno.

Básico
StandardDatacenterPre-install
🧠

CPU

Mín: 1.4 GHz x64, 64-bit
✦ Rec: 2.0 GHz+ 8 núcleos
💾

RAM

Mín: 512 MB (Core) / 2 GB (GUI)
✦ Rec: 16–32 GB ECC
🖴

Disco Sistema

Mín: 32 GB
✦ Rec: 80 GB SSD NVMe
🌐

Red

Mín: 1 NIC Ethernet
✦ Rec: 2× 1 Gbps (team)
🔐

TPM

Mín: TPM 2.0 opcional
✦ Req: Secured-Core Server
💿

Instalación

USB 8 GB+ / DVD / WDS
✦ Rec: USB 3.0 Rufus GPT

Lista de verificación previa

  • BIOS/UEFI actualizado — Verifica la versión del firmware del servidor y actualiza si hay versión estable disponible.
  • UEFI + Secure Boot activos — Necesario para Secured-Core Server y TPM 2.0.
  • Modo GPT confirmado — Desactiva CSM/Legacy. La instalación en GPT+UEFI es obligatoria para características de seguridad.
  • TPM 2.0 habilitado — Verifica en BIOS bajo «Security» o «Advanced». Esencial para BitLocker y Credential Guard.
  • Controladores RAID/NIC descargados — Del fabricante del servidor (HP, Dell, Lenovo, SuperMicro) en USB aparte.
  • IP estática planificada — IP, máscara, gateway, DNS primario y secundario definidos.
  • Nombre del servidor decidido — Máx. 15 caracteres, sin espacios. Ej: SRV-DC-01, SRV-FILE-01.
  • Dominio interno definido — Ej: empresa.local o ad.empresa.com.
  • Licencia disponible — Clave MAK, KMS o suscripción EA/OPEN.
  • Backup de sistemas existentes — Si es migración, backup completo antes de comenzar.

Crear USB booteable con Rufus

GUI — Rufus 4.x
1. Descargar Rufus desde https://rufus.ie (sin instalación) 2. Insertar USB 8 GB o más (todos los datos se borrarán) Dispositivo: → USB seleccionado Tipo de arranque: → Imagen de disco → seleccionar ISO de WS2022 Esquema partición: → GPT Sistema destino: → UEFI (no CSM) Sistema archivos: → NTFS Tamaño clúster: → 4096 bytes (por defecto) 3. Clic EMPEZAR → confirmar borrado del USB

Verificar hash SHA256 del ISO

PowerShell
# Verificar integridad del ISO descargado Get-FileHash "C:\Downloads\WS2022.iso" -Algorithm SHA256 | Format-List # Compara el hash con el publicado en Microsoft Volume Licensing
⬛ INSTALACIÓN
💿
02 · Instalación

Instalación Completa Paso a Paso

Proceso de instalación: GUI vs. Server Core, particionado, OOBE y activación.

Intermedio
StandardDatacenter⚠ Backup previo
Boot USB
Idioma
Edición
Tipo inst.
Partición
Copia archivos
OOBE
Post-install

Selección de edición — GUI vs. Server Core

🖥️ Desktop Experience (GUI)

  • Interfaz gráfica completa
  • Server Manager, MMC, herramientas GUI
  • Mayor consumo de RAM (~1 GB extra)
  • Superficie de ataque mayor
  • ✦ Recomendado para servidores de archivos, AD y usuarios nuevos en administración

⌨️ Server Core (sin GUI)

  • Solo línea de comandos local
  • Menor RAM, menor superficie de ataque
  • Administración remota vía PowerShell / RSAT
  • Actualizaciones más ligeras y rápidas
  • ✦ Recomendado para producción, Hyper-V hosts, DC secundarios
💡
Recomendación GPS-971: Para el primer controlador de dominio y servidores de archivos, usa Desktop Experience para facilitar la administración. Para hosts de Hyper-V y servidores adicionales usa Server Core para mayor seguridad y rendimiento.

Particionado recomendado

GUI — Windows Setup
Esquema recomendado — servidor con 2 discos (SSD 120GB + HDD 2TB): ── DISCO 0 (SSD 120 GB) — Solo sistema operativo ── Partición 1 (EFI): 300 MB → Creada automáticamente Partición 2 (MSR): 16 MB → Creada automáticamente Partición 3 (C:\): 80 GB → Sistema operativo WS2022 Partición 4 (Recup): 500 MB → Creada automáticamente ── DISCO 1 (HDD/SSD 2 TB) — Datos (añadir después de instalar) ── Partición 1 (D:\): 500 GB → Active Directory / SYSVOL / NTDS Partición 2 (E:\): 1 TB → Carpetas compartidas / Datos usuarios Partición 3 (F:\): ~500 GB → Backups locales REGLA DE ORO: Nunca almacenes datos de usuarios en C:\ Si reinstalaas el SO, pierdes los datos del dominio.

Activación del servidor

CMD — Admin
:: Ver estado de activación actual slmgr /dli :: Ver detalles completos de la licencia slmgr /dlv :: Introducir clave de producto manualmente slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX :: Activar online slmgr /ato :: Configurar servidor KMS (si usas KMS corporativo) slmgr /skms kms-server.empresa.local slmgr /ato :: Verificar versión y build instalado winver wmic os get Caption, Version, BuildNumber, OSArchitecture

Convertir Server Core a GUI (y viceversa)

PowerShell — Admin
# Añadir GUI a Server Core (necesita ISO montado en D:) Install-WindowsFeature Server-Gui-Shell, Server-Gui-Mgmt-Infra ` -Source "D:\Sources\SxS" -Restart # Quitar GUI (pasar a Server Core — más seguro) Uninstall-WindowsFeature Server-Gui-Shell, Server-Gui-Mgmt-Infra -Restart # Ver modo actual Get-WindowsFeature Server-Gui-Shell | Select-Object Name, InstallState
⬛ CONFIGURACIÓN INICIAL
🔧
03 · Post-instalación

Configuración Inicial del Servidor

Nombre, zona horaria, NTP, SConfig, drivers, Server Manager y hardening básico inmediato.

Intermedio
StandardDatacenterPowerShell⚠ Admin

SConfig — Herramienta de configuración interactiva

CMD / PowerShell — Admin
:: Abrir SConfig (especialmente útil en Server Core) SConfig Opciones principales de SConfig: 1 → Unir al dominio / grupo de trabajo 2 → Cambiar nombre del equipo 4 → Configurar Escritorio Remoto 5 → Windows Update 6 → Descargar e instalar actualizaciones 8 → Configuración de red 9 → Fecha y hora 14 → Salir a la línea de comandos 15 → Reiniciar el servidor

Nombre del servidor y zona horaria

PowerShell — Admin
# Cambiar nombre del servidor Rename-Computer -NewName "SRV-DC-01" -Force -Restart # Zonas horarias más usadas Set-TimeZone -Id "Romance Standard Time" # España peninsular Set-TimeZone -Id "Atlantic Standard Time" # Islas Canarias Set-TimeZone -Id "Central European Standard Time" # Alemania / Francia Set-TimeZone -Id "UTC" # UTC # Configurar NTP con servidores pool públicos w32tm /config /syncfromflags:manual /manualpeerlist:"0.es.pool.ntp.org 1.es.pool.ntp.org 2.es.pool.ntp.org" /reliable:YES /update net stop w32time net start w32time w32tm /resync /force w32tm /query /status # Ver zona horaria actual Get-TimeZone

Instalar RSAT y herramientas de administración

PowerShell — Admin
# Instalar las herramientas de administración más comunes Install-WindowsFeature RSAT -IncludeAllSubFeature -IncludeManagementTools # Instalar herramientas específicas Install-WindowsFeature RSAT-AD-Tools # AD Users & Computers, etc. Install-WindowsFeature RSAT-DNS-Server # DNS Manager Install-WindowsFeature RSAT-DHCP # DHCP Manager Install-WindowsFeature RSAT-File-Services # File & Storage Services Install-WindowsFeature GPMC # Group Policy Mgmt Console # Ver roles instalados Get-WindowsFeature | Where-Object {$_.InstallState -eq "Installed"} | Format-Table Name, DisplayName -AutoSize # Ver todos los roles disponibles con descripción Get-WindowsFeature | Format-Table -AutoSize

Política de contraseñas y seguridad básica

CMD — Admin
:: Configurar política de contraseñas segura net accounts /minpwlen:14 /maxpwage:90 /minpwage:1 /uniquepw:10 :: Bloqueo tras 5 intentos fallidos, desbloqueo automático en 30 min net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30 :: Ver política actual net accounts :: Renombrar cuenta administrador local (dificulta ataques dirigidos) wmic useraccount where name='Administrator' rename 'SrvAdmin' :: Crear cuenta de administrador secundaria con nombre no obvio net user "SrvBackupAdmin" "C0mpl3x!P@ss2026" /add /passwordchg:no net localgroup Administrators "SrvBackupAdmin" /add :: Deshabilitar la cuenta Guest net user Guest /active:no
🌐
04 · Networking

Red — IP Estática, DNS, DHCP y NIC Teaming

Configuración completa de red: IP estática, DNS integrado con AD, DHCP, NIC Teaming y DoH.

Intermedio
StandardDatacenterPowerShell⚠ Admin
⚠️
IP estática obligatoria: El servidor DC/DNS debe tener IP estática. Si cambia la IP, todos los clientes del dominio pierden resolución DNS y autenticación Kerberos. Configura la IP antes de promover el servidor a controlador de dominio.

Configurar IP estática

PowerShell — Admin
# Ver adaptadores disponibles Get-NetAdapter | Select-Object Name, InterfaceIndex, Status, LinkSpeed, MacAddress # Ver configuración IP actual Get-NetIPConfiguration # Eliminar IP dinámica (DHCP) si existe Remove-NetIPAddress -InterfaceAlias "Ethernet" -Confirm:$false # Asignar IP estática New-NetIPAddress ` -InterfaceAlias "Ethernet" ` -IPAddress "192.168.1.10" ` -PrefixLength 24 ` -DefaultGateway "192.168.1.1" # DNS primario = sí mismo (DC), secundario = DNS externo Set-DnsClientServerAddress -InterfaceAlias "Ethernet" ` -ServerAddresses "192.168.1.10", "8.8.8.8" # Deshabilitar IPv6 si no se usa (reduce superficie de ataque) Disable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6

NIC Teaming (redundancia y balanceo de carga)

PowerShell — Admin
# Crear NIC Team con 2 adaptadores (modo LACP) New-NetLbfoTeam -Name "Team-LAN" ` -TeamMembers "Ethernet","Ethernet 2" ` -TeamingMode LACP ` -LoadBalancingAlgorithm Dynamic # Alternativa: Switch Independent (sin configurar el switch) New-NetLbfoTeam -Name "Team-LAN" ` -TeamMembers "Ethernet","Ethernet 2" ` -TeamingMode SwitchIndependent # Ver estado del equipo Get-NetLbfoTeam Get-NetLbfoTeamMember # Eliminar NIC Team Remove-NetLbfoTeam -Name "Team-LAN" -Confirm:$false

Configurar DHCP

PowerShell — Admin
# Instalar rol DHCP Install-WindowsFeature DHCP -IncludeManagementTools # Autorizar servidor DHCP en Active Directory Add-DhcpServerInDC # Crear scope de red Add-DhcpServerv4Scope -Name "Red Corporativa" ` -StartRange "192.168.1.100" ` -EndRange "192.168.1.200" ` -SubnetMask "255.255.255.0" ` -LeaseDuration "8.00:00:00" ` -State Active # Opciones de scope: gateway, DNS y dominio Set-DhcpServerv4OptionValue -ScopeId "192.168.1.0" ` -Router "192.168.1.1" ` -DnsServer "192.168.1.10" ` -DnsDomain "empresa.local" # Excluir IPs estáticas (1-50: equipos de infraestructura) Add-DhcpServerv4ExclusionRange -ScopeId "192.168.1.0" ` -StartRange "192.168.1.1" ` -EndRange "192.168.1.99" # Reserva de IP para equipo específico por MAC Add-DhcpServerv4Reservation -ScopeId "192.168.1.0" ` -IPAddress "192.168.1.150" ` -ClientId "00-1A-2B-3C-4D-5E" ` -Description "Impresora Sala Reuniones" # Ver leases activos Get-DhcpServerv4Lease -ScopeId "192.168.1.0" | Select-Object IPAddress, HostName, ClientId

DNS sobre HTTPS (DoH) — Nuevo en WS2022

PowerShell — Admin
# Configurar DNS sobre HTTPS en el cliente de red del servidor Add-DnsClientDohServerAddress -ServerAddress "8.8.8.8" ` -DohTemplate "https://dns.google/dns-query" ` -AllowFallbackToUdp $true -AutoUpgrade $true Add-DnsClientDohServerAddress -ServerAddress "1.1.1.1" ` -DohTemplate "https://cloudflare-dns.com/dns-query" ` -AllowFallbackToUdp $true -AutoUpgrade $true # Ver servidores DoH configurados Get-DnsClientDohServerAddress
🗄️
05 · Active Directory Domain Services

Active Directory — Instalación y Configuración

Promover servidor a DC, Forest y Domain Level, OUs, replicación y transferencia de roles FSMO.

Avanzado
StandardDatacenterPowerShell⚠ Admin

Instalar y promover el primer controlador de dominio

PowerShell — Admin
# Paso 1: Instalar el rol AD DS Install-WindowsFeature AD-Domain-Services -IncludeManagementTools # Paso 2: Promover a DC (nuevo bosque) Install-ADDSForest ` -DomainName "empresa.local" ` -DomainNetbiosName "EMPRESA" ` -ForestMode WinThreshold ` -DomainMode WinThreshold ` -DatabasePath "D:\NTDS" ` -LogPath "D:\NTDS" ` -SysvolPath "D:\SYSVOL" ` -SafeModeAdministratorPassword (ConvertTo-SecureString "D$RM@Pass2026!" -AsPlainText -Force) ` -InstallDns -Force # El servidor se reiniciará automáticamente # Agregar DC secundario a dominio existente Install-ADDSDomainController ` -DomainName "empresa.local" ` -Credential (Get-Credential) ` -DatabasePath "D:\NTDS" ` -LogPath "D:\NTDS" ` -SysvolPath "D:\SYSVOL" ` -InstallDns -Force

Estructura de Unidades Organizativas (OUs)

PowerShell — Admin
# Crear estructura de OUs corporativa completa $dn = "DC=empresa,DC=local" # OU raíz de la empresa New-ADOrganizationalUnit -Name "EMPRESA" -Path $dn -ProtectedFromAccidentalDeletion $true $base = "OU=EMPRESA,$dn" # OUs principales New-ADOrganizationalUnit -Name "Usuarios" -Path $base New-ADOrganizationalUnit -Name "Equipos" -Path $base New-ADOrganizationalUnit -Name "Grupos" -Path $base New-ADOrganizationalUnit -Name "Servidores" -Path $base New-ADOrganizationalUnit -Name "Cuentas de Servicio" -Path $base # Sub-OUs de usuarios por departamento $uOU = "OU=Usuarios,$base" New-ADOrganizationalUnit -Name "Dirección" -Path $uOU New-ADOrganizationalUnit -Name "TI" -Path $uOU New-ADOrganizationalUnit -Name "Ventas" -Path $uOU New-ADOrganizationalUnit -Name "Contabilidad" -Path $uOU New-ADOrganizationalUnit -Name "RRHH" -Path $uOU

GPOs esenciales de seguridad

PowerShell — Admin
# Abrir consola de GPO gpmc.msc # Forzar actualización en todos los equipos del dominio Get-ADComputer -Filter * | ForEach-Object { Invoke-GPUpdate -Computer $_.Name -Force -ErrorAction SilentlyContinue } # Crear GPO de seguridad base New-GPO -Name "SEC-Base-Todos" New-GPLink -Name "SEC-Base-Todos" -Target "OU=EMPRESA,DC=empresa,DC=local" # Ver estado de replicación de AD repadmin /replsummary repadmin /showrepl # Diagnóstico completo del dominio dcdiag /test:all /v # Ver roles FSMO netdom query fsmo # Transferir roles FSMO a otro DC (planificado) Move-ADDirectoryServerOperationMasterRole -Identity "SRV-DC-02" ` -OperationMasterRole PDCEmulator, RIDMaster, InfrastructureMaster ` -Confirm:$false
👤
06 · Gestión de Usuarios y Grupos

Usuarios, Grupos, Permisos y Fine-Grained Password

CRUD de usuarios AD, grupos de seguridad, importación masiva CSV y políticas de contraseña granulares.

Intermedio
StandardDatacenterPowerShell⚠ Admin
PowerShell — Admin
# Crear usuario en AD con atributos completos New-ADUser ` -Name "Laura Martínez" ` -SamAccountName "lmartinez" ` -UserPrincipalName "lmartinez@empresa.local" ` -GivenName "Laura" ` -Surname "Martínez" ` -DisplayName "Laura Martínez" ` -Department "Tecnología" ` -Title "Administradora de Sistemas" ` -Office "Madrid" ` -OfficePhone "+34 91 000 0001" ` -Path "OU=TI,OU=Usuarios,OU=EMPRESA,DC=empresa,DC=local" ` -AccountPassword (ConvertTo-SecureString "T3mP@ss2026!" -AsPlainText -Force) ` -Enabled $true ` -ChangePasswordAtLogon $true ` -PasswordNeverExpires $false # Operaciones comunes de usuario Disable-ADAccount -Identity "lmartinez" Enable-ADAccount -Identity "lmartinez" Unlock-ADAccount -Identity "lmartinez" Remove-ADUser -Identity "lmartinez" -Confirm:$false # Resetear contraseña Set-ADAccountPassword -Identity "lmartinez" ` -NewPassword (ConvertTo-SecureString "NuevoP@ss2026!" -AsPlainText -Force) -Reset # Buscar usuarios inactivos (sin login en 90 días) $fecha = (Get-Date).AddDays(-90) Get-ADUser -Filter {LastLogonDate -lt $fecha -and Enabled -eq $true} ` -Properties LastLogonDate | Select-Object Name, SamAccountName, LastLogonDate # Importar usuarios masivos desde CSV # CSV formato: Name,Sam,Department,Title,Password Import-Csv "C:\Admin\usuarios.csv" | ForEach-Object { New-ADUser -Name $_.Name -SamAccountName $_.Sam ` -Department $_.Department -Title $_.Title ` -Path "OU=Usuarios,OU=EMPRESA,DC=empresa,DC=local" ` -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) ` -Enabled $true -ChangePasswordAtLogon $true Write-Host "✓ $($_.Name)" -ForegroundColor Green }

Fine-Grained Password Policy (FGPP)

Permite aplicar políticas de contraseña diferentes a usuarios o grupos específicos (administradores, cuentas de servicio).

PowerShell — Admin
# Crear política de contraseñas estricta para administradores New-ADFineGrainedPasswordPolicy ` -Name "PSO-Admins" ` -Precedence 10 ` -MinPasswordLength 16 ` -PasswordHistoryCount 24 ` -MaxPasswordAge (New-TimeSpan -Days 60) ` -MinPasswordAge (New-TimeSpan -Days 1) ` -LockoutThreshold 3 ` -LockoutObservationWindow (New-TimeSpan -Minutes 30) ` -LockoutDuration (New-TimeSpan -Minutes 60) ` -ComplexityEnabled $true -ReversibleEncryptionEnabled $false # Aplicar política a un grupo Add-ADFineGrainedPasswordPolicySubject -Identity "PSO-Admins" ` -Subjects "Domain Admins" # Ver políticas vigentes para un usuario Get-ADUserResultantPasswordPolicy -Identity "lmartinez"
📁
07 · File & Storage Services

Almacenamiento — Carpetas, SMB 3.1.1, Cuotas y DFS

Carpetas compartidas con SMB comprimido, permisos NTFS, cuotas de disco y espacio de nombres DFS.

Intermedio
StandardDatacenterPowerShell⚠ Admin

Configurar SMB 3.1.1 con compresión

PowerShell — Admin
# Deshabilitar SMBv1 (obligatorio por seguridad) Set-SmbServerConfiguration -EnableSMB1Protocol $false -Confirm:$false # Habilitar compresión SMB 3.1.1 (nuevo en WS2022) Set-SmbServerConfiguration ` -EnableSMBCompression $true ` -Confirm:$false # Cifrado SMB para datos en tránsito Set-SmbServerConfiguration -EncryptData $true -Confirm:$false # Ver configuración SMB actual Get-SmbServerConfiguration | Select-Object ` EnableSMB1Protocol, EnableSMB2Protocol, EnableSMBCompression, EncryptData

Crear y gestionar carpetas compartidas

PowerShell — Admin
# Crear estructura de carpetas en disco de datos (E:\) "E:\Empresa","E:\Empresa\Documentos","E:\Empresa\Proyectos", "E:\Departamentos\TI","E:\Departamentos\Ventas","E:\Departamentos\RRHH", "E:\Usuarios" | ForEach-Object { New-Item -Path $_ -ItemType Directory -Force } # Crear carpetas compartidas SMB New-SmbShare -Name "Empresa$" ` -Path "E:\Empresa" ` -FullAccess "EMPRESA\Domain Admins" ` -ChangeAccess "EMPRESA\Domain Users" ` -FolderEnumerationMode AccessBased ` -Description "Documentación corporativa" # FolderEnumerationMode AccessBased = usuarios solo ven lo que tienen acceso # Asignar permisos NTFS con icacls icacls "E:\Departamentos\TI" /inheritance:r icacls "E:\Departamentos\TI" /grant "EMPRESA\GRP-TI:(OI)(CI)M" icacls "E:\Departamentos\TI" /grant "EMPRESA\Domain Admins:(OI)(CI)F" # Mapear unidad en cliente net use Z: \\SRV-FILE-01\Empresa$ /persistent:yes

Cuotas de disco (File Server Resource Manager)

PowerShell — Admin
# Instalar FSRM (File Server Resource Manager) Install-WindowsFeature FS-Resource-Manager -IncludeManagementTools # Crear plantilla de cuota de 10 GB New-FsrmQuotaTemplate -Name "Cuota 10GB Usuario" ` -Size 10GB -SoftLimit $false # Aplicar cuota a carpeta de usuarios New-FsrmQuota -Path "E:\Usuarios" ` -Template "Cuota 10GB Usuario" # Ver uso de cuotas Get-FsrmQuota | Select-Object Path, Size, Usage, PeakUsage

DFS — Espacio de nombres distribuido

PowerShell — Admin
# Instalar rol DFS Install-WindowsFeature FS-DFS-Namespace, FS-DFS-Replication -IncludeManagementTools # Crear espacio de nombres DFS (dominio) New-DfsnRoot -Path "\\empresa.local\Datos" ` -Type DomainV2 ` -TargetPath "\\SRV-FILE-01\Empresa$" # Añadir carpeta al espacio de nombres New-DfsnFolder -Path "\\empresa.local\Datos\Departamentos" ` -TargetPath "\\SRV-FILE-01\Departamentos" # Los clientes accederán siempre como: \\empresa.local\Datos\Departamentos # sin importar qué servidor físico aloja la carpeta
🖨️
08 · Print Services

Servidor de Impresión — Gestión y Troubleshooting

Instalar impresoras en red, drivers, compartición, gestión de colas y limpieza de spooler.

Intermedio
StandardDatacenterPowerShell
PowerShell — Admin
# Instalar rol Servidor de Impresión Install-WindowsFeature Print-Server, Print-Internet -IncludeManagementTools # Añadir puerto TCP/IP para impresora de red Add-PrinterPort -Name "IP_192.168.1.60" -PrinterHostAddress "192.168.1.60" # Instalar impresora Add-Printer -Name "HP LaserJet Contabilidad" ` -PortName "IP_192.168.1.60" ` -DriverName "HP Universal Printing PCL 6" # Compartir impresora en red Set-Printer -Name "HP LaserJet Contabilidad" ` -Shared $true -ShareName "ImpContab" # Publicar impresora en Active Directory Set-Printer -Name "HP LaserJet Contabilidad" -Published $true # Ver todas las impresoras instaladas Get-Printer | Select-Object Name, PortName, Shared, ShareName, Published # Ver cola de impresión Get-PrintJob -PrinterName "HP LaserJet Contabilidad" # Cancelar todos los trabajos de impresión Get-PrintJob -PrinterName "HP LaserJet Contabilidad" | Remove-PrintJob # Limpiar spooler atascado net stop spooler Remove-Item "C:\Windows\System32\spool\PRINTERS\*" -Force -ErrorAction SilentlyContinue net start spooler # Instalar impresora en cliente desde el servidor (GPO) Add-PrinterConnection "\\SRV-PRINT-01\ImpContab" # Abrir consola de administración de impresión printmanagement.msc
⬛ SEGURIDAD Y HARDENING
🔒
09 · Security Hardening

Hardening Avanzado — Secured-Core, Defender y Auditoría

Configurar Secured-Core Server, Windows Defender ATP, BitLocker, auditoría y desactivar servicios inseguros.

Avanzado
StandardDatacenter🔴 Crítico

Verificar y activar características Secured-Core

PowerShell — Admin
# Verificar estado de Secure Boot Confirm-SecureBootUEFI # Verificar estado de VBS (Virtualization-Based Security) Get-WmiObject -Namespace "root\Microsoft\Windows\DeviceGuard" ` -Class Win32_DeviceGuard | Select-Object SecurityServicesRunning, VirtualizationBasedSecurityStatus # Habilitar Credential Guard (previene robo de credenciales) reg add "HKLM\SYSTEM\CurrentControlSet\Control\LSA" /v LsaCfgFlags /t REG_DWORD /d 1 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v EnableVirtualizationBasedSecurity /t REG_DWORD /d 1 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v LsaCfgFlags /t REG_DWORD /d 1 /f # Verificar estado de TPM Get-Tpm # Habilitar BitLocker en C: con TPM Enable-BitLocker -MountPoint "C:" ` -TpmProtector -UsedSpaceOnly # Guardar clave de recuperación BitLocker en AD Backup-BitLockerKeyProtector -MountPoint "C:" ` -KeyProtectorId (Get-BitLockerVolume -MountPoint "C:").KeyProtector[0].KeyProtectorId

Auditoría de seguridad exhaustiva

CMD — Admin
:: Activar auditoría avanzada por categoría auditpol /set /subcategory:"Logon" /success:enable /failure:enable auditpol /set /subcategory:"Logoff" /success:enable auditpol /set /subcategory:"Account Lockout" /failure:enable auditpol /set /subcategory:"User Account Management" /success:enable /failure:enable auditpol /set /subcategory:"Security Group Management" /success:enable auditpol /set /subcategory:"Directory Service Changes" /success:enable auditpol /set /subcategory:"Credential Validation" /success:enable /failure:enable auditpol /set /subcategory:"File System" /failure:enable auditpol /set /subcategory:"Process Creation" /success:enable :: Ver configuración completa auditpol /get /category:* :: Buscar eventos críticos (últimas 2 horas) :: 4625=Login fallido | 4740=Cuenta bloqueada | 4756=Miembro añadido a grupo privilegiado powershell -command "Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625,4740,4756;StartTime=(Get-Date).AddHours(-2)} -MaxEvents 50 | Select TimeCreated,Id,Message | Format-List"

Hardening de protocolos y servicios

PowerShell — Admin
# Deshabilitar SMBv1 (crítico) Set-SmbServerConfiguration -EnableSMB1Protocol $false -Confirm:$false # Deshabilitar TLS 1.0 y 1.1 (obsoletos) New-Item "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Force Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name Enabled -Value 0 # Asegurar que TLS 1.3 está habilitado New-Item "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Force Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name Enabled -Value 1 # Cambiar puerto RDP y habilitar NLA Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name PortNumber -Value 3391 Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name UserAuthentication -Value 1 # Abrir nuevo puerto en Firewall New-NetFirewallRule -DisplayName "RDP Secure Port" -Direction Inbound -Protocol TCP -LocalPort 3391 -Action Allow
⬛ BACKUP Y ACTUALIZACIONES
💾
10 · Backup & Disaster Recovery

Copia de Seguridad y Recuperación ante Desastres

Windows Server Backup, Veeam Free, backup de AD, script automatizado y prueba de restauración.

Avanzado
StandardDatacenter🔴 Misión Crítica
🔴
Regla 3-2-1-1-0: 3 copias, en 2 medios distintos, 1 offsite, 1 inmutable (no sobreescribible), 0 errores verificados. Para servidores de producción, testea la restauración mensualmente.
PowerShell — Admin
# Instalar Windows Server Backup Install-WindowsFeature Windows-Server-Backup # Ver historial de backups wbadmin get versions # Ver estado del último backup wbadmin get status # Backup completo del sistema a disco externo (F:) wbadmin start backup -backuptarget:F: -include:C:,D:,E: -allCritical -quiet # Backup programado diario a las 02:00 a disco externo wbadmin enable backup -addtarget:F: -schedule:02:00 -include:C:,D:,E: -quiet # Backup a carpeta de red con credenciales wbadmin start backup -backuptarget:\\NAS\Backups\SRV-DC-01 -include:C:,D:,E: -allCritical -user:empresa\BackupSvc -password:B@ckupP@ss2026 -quiet # Backup solo del estado del sistema (AD, registro, arranque) wbadmin start systemstatebackup -backuptarget:F: -quiet # Restaurar archivo específico desde backup wbadmin start recovery -version:03/15/2026-02:00 -itemtype:File -items:E:\Empresa\Contrato.docx -recoveryTarget:E:\Restaurados -quiet # Exportar AD a archivo LDIF (backup adicional de estructura) ldifde -f C:\Backup\AD_Export_$(Get-Date -f yyyyMMdd).ldf -s localhost

Script de backup automatizado con alertas

PowerShell — Script (backup-wserver.ps1)
#requires -RunAsAdministrator # Backup completo diario con log, verificación y alerta por email # Programar como Tarea Programada: SYSTEM, Diario 02:00 param( [string]$Destino = "\\NAS\Backups\SRV-DC-01", [string]$Email = "admin@empresa.com" ) $ts = Get-Date -Format "yyyyMMdd_HHmm" $logPath = "C:\Logs\Backup\backup_$ts.log" New-Item -Path (Split-Path $logPath) -ItemType Directory -Force | Out-Null Start-Transcript -Path $logPath try { Write-Host "[$(Get-Date)] INICIANDO BACKUP → $Destino" # Ejecutar backup wbadmin start backup -backuptarget:$Destino -include:C:,D:,E: -allCritical -quiet if ($LASTEXITCODE -eq 0) { Write-Host "[$(Get-Date)] ✓ BACKUP COMPLETADO EXITOSAMENTE" -ForegroundColor Green } else { throw "wbadmin retornó código de error: $LASTEXITCODE" } # Limpiar backups con más de 30 días del log Get-ChildItem "C:\Logs\Backup\" -Filter "*.log" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item -Force } catch { Write-Host "[$(Get-Date)] ✗ ERROR: $_" -ForegroundColor Red # Aquí puedes añadir Send-MailMessage para notificaciones } finally { Stop-Transcript }
🔄
11 · Windows Update / WSUS

Gestión de Actualizaciones — WSUS y Hotpatch

Actualizaciones controladas con WSUS, PSWindowsUpdate, Azure Hotpatch y gestión de reinicios.

Intermedio
StandardDatacenter⚠ Planificar reinicio
⚠️
En producción: Nunca apliques actualizaciones sin backup previo. Usa WSUS o una ventana de mantenimiento definida. Comprueba siempre el historial de actualizaciones problemáticas antes de aplicar.
PowerShell — Admin
# Instalar módulo PSWindowsUpdate Install-Module PSWindowsUpdate -Force Import-Module PSWindowsUpdate # Ver actualizaciones disponibles (sin instalar) Get-WindowsUpdate # Instalar solo actualizaciones de seguridad Install-WindowsUpdate -Category "Security Updates" -AcceptAll -AutoReboot # Instalar todas las actualizaciones sin reiniciar Install-WindowsUpdate -AcceptAll -IgnoreReboot # Ver historial de actualizaciones instaladas Get-WUHistory | Select-Object -First 30 Date, Title, Result | Format-Table -AutoSize # Instalar WSUS (para gestionar actualizaciones de todos los equipos) Install-WindowsFeature UpdateServices, UpdateServices-WidDB, UpdateServices-Services, UpdateServices-RSAT ` -IncludeManagementTools # Configurar WSUS después de instalar wsusutil.exe postinstall CONTENT_DIR=E:\WSUS # Ver actualizaciones disponibles via wuauclt wuauclt /detectnow /updatenow # Verificar actualizaciones instaladas wmic qfe list full /format:table | sort /r # Programar reinicio para mantenimiento (3:00 AM) $action = New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "/r /f /t 60" $trigger = New-ScheduledTaskTrigger -Once -At "03:00" Register-ScheduledTask -TaskName "MaintenanceReboot" -Action $action -Trigger $trigger -RunLevel Highest
⬛ MONITOREO Y RENDIMIENTO
📊
12 · Monitoring

Monitoreo, Análisis y Alertas del Sistema

Event Viewer, contadores de rendimiento, script de informe de salud y alertas automáticas.

Intermedio
StandardDatacenterPowerShell
PowerShell
# Abrir herramientas de monitoreo GUI resmon # Monitor de recursos perfmon # Monitor de rendimiento eventvwr.msc # Visor de eventos taskmgr # Administrador de tareas # ── RECURSOS EN TIEMPO REAL ────────────────────────────────────── # Uptime del servidor (Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime # CPU — uso actual Get-WmiObject -Class Win32_Processor | Measure-Object LoadPercentage -Average | Select-Object Average # CPU — top 10 procesos Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, Id, WorkingSet # RAM — resumen $os = Get-WmiObject Win32_OperatingSystem Write-Host "Total: $([math]::Round($os.TotalVisibleMemorySize/1MB,2)) GB | Libre: $([math]::Round($os.FreePhysicalMemory/1MB,2)) GB | Usada: $([math]::Round(($os.TotalVisibleMemorySize - $os.FreePhysicalMemory)/1MB,2)) GB" # Disco — uso por volumen con porcentaje Get-Volume | Where-Object {$_.DriveLetter} | Select-Object DriveLetter, FileSystemLabel, @{N="Total_GB";E={[math]::Round($_.Size/1GB,1)}}, @{N="Libre_GB";E={[math]::Round($_.SizeRemaining/1GB,1)}}, @{N="Usado_%";E={[math]::Round((($_.Size-$_.SizeRemaining)/$_.Size)*100,1)}}, HealthStatus | Format-Table -AutoSize # Servicios críticos detenidos Get-Service NTDS,DNS,DHCP,Netlogon,W32Time,WinRM | Where-Object {$_.Status -ne "Running"} | Select-Object Name, Status, StartType # Análisis Event Viewer — errores de las últimas 24h Get-WinEvent -FilterHashtable @{ LogName = 'System' Level = 1,2 StartTime = (Get-Date).AddHours(-24) } -MaxEvents 20 -ErrorAction SilentlyContinue | Select-Object TimeCreated, LevelDisplayName, ProviderName, Message | Format-Table -Wrap -AutoSize # Generar informe de rendimiento (WinSAT) winsat formal

Script de monitoreo continuo (Watch-Server.ps1)

PowerShell — Script
# Monitor de salud con alertas — ejecutar como tarea programada cada hora $alertas = @() $os = Get-WmiObject Win32_OperatingSystem # Verificar CPU alto (>85%) $cpu = (Get-WmiObject Win32_Processor | Measure-Object LoadPercentage -Average).Average if ($cpu -gt 85) { $alertas += "⚠ CPU alta: ${cpu}%" } # Verificar RAM baja (<10% libre) $ramPct = ($os.FreePhysicalMemory / $os.TotalVisibleMemorySize) * 100 if ($ramPct -lt 10) { $alertas += "⚠ RAM baja: $([math]::Round($ramPct,1))% libre" } # Verificar disco C: casi lleno (<15% libre) $c = Get-Volume -DriveLetter C $cPct = ($c.SizeRemaining / $c.Size) * 100 if ($cPct -lt 15) { $alertas += "⚠ Disco C: casi lleno: $([math]::Round($cPct,1))% libre" } # Verificar servicios críticos detenidos Get-Service NTDS,DNS,DHCP,Netlogon | Where-Object {$_.Status -ne "Running"} | ForEach-Object { $alertas += "🔴 Servicio detenido: $($_.Name)" } # Mostrar alertas y enviar email si las hay if ($alertas.Count -gt 0) { $alertas | ForEach-Object { Write-Host $_ -ForegroundColor Red } # Send-MailMessage ... (configura SMTP aquí) } else { Write-Host "[$(Get-Date)] ✓ Servidor en estado saludable" -ForegroundColor Green }
🚀
13 · Performance Tuning

Optimización de Rendimiento del Servidor

Plan de energía, memoria virtual, servicios innecesarios, NUMA y configuración de Hyper-V.

Avanzado
StandardDatacenterPowerShell⚠ Admin
PowerShell — Admin
# Plan de energía High Performance (obligatorio en servidores físicos) powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c powercfg /getactivescheme # Deshabilitar hibernación powercfg /hibernate off # Configurar memoria virtual automática $cs = Get-WmiObject -Class Win32_ComputerSystem $cs.AutomaticManagedPagefile = $false $cs.Put() # Deshabilitar indexación en disco de datos Set-WmiInstance -Class Win32_Volume -Filter 'DriveLetter = "E:"' ` -Arguments @{IndexingEnabled=$false} # Ajuste de memoria del kernel para cargas de trabajo de servidor reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v DisablePagingExecutive /t REG_DWORD /d 1 /f # Para servidores de base de datos: maximizar rendimiento en segundo plano reg add "HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl" /v Win32PrioritySeparation /t REG_DWORD /d 18 /f # Ajustar tamaño de los logs del sistema (recomendado: 512 MB cada uno) wevtutil sl System /ms:524288000 wevtutil sl Application /ms:524288000 wevtutil sl Security /ms:1073741824 # Deshabilitar servicios no necesarios en servidor de producción $svc_off = @("XblAuthManager","XblGameSave","WSearch","Fax","SysMain") $svc_off | ForEach-Object { Get-Service $_ -ErrorAction SilentlyContinue | Set-Service -StartupType Disabled Stop-Service $_ -Force -ErrorAction SilentlyContinue } # Verificar fragmentación de AD (mantenimiento) # Ejecutar defrag de NTDS en modo offline (desde DSRM) :: ntdsutil "activate instance ntds" "files" "compact to D:\NTDS_compact" quit quit
⬛ ACCESO REMOTO Y FIREWALL
🌍
14 · Remote Access & WinRM

Acceso Remoto — RDP, WinRM, SSH y VPN

RDP seguro con NLA, administración remota vía PowerShell Remoting y WinRM, OpenSSH integrado.

Avanzado
StandardDatacenter⚠ Seguridad crítica
🔴
Nunca expongas RDP al Internet directamente. Usa siempre VPN + RDP, o un Jump Server como intermediario. Cambia el puerto, activa NLA y limita el acceso solo a IPs de la red corporativa o VPN.

RDP seguro — configuración completa

PowerShell — Admin
# Habilitar RDP Set-ItemProperty "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name fDenyTSConnections -Value 0 # Forzar NLA (Network Level Authentication) Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name UserAuthentication -Value 1 # Cifrado mínimo: Alta seguridad Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name MinEncryptionLevel -Value 3 # Limitar RDP a grupo específico Add-LocalGroupMember -Group "Remote Desktop Users" -Member "EMPRESA\GRP-Admins-IT" # Ver sesiones RDP activas quser query session # Desconectar sesión RDP por ID logoff 2 /server:SRV-DC-01

PowerShell Remoting y WinRM

PowerShell — Admin
# Habilitar WinRM (PowerShell Remoting) Enable-PSRemoting -Force # Ver estado de WinRM winrm quickconfig # Conectar a servidor remoto Enter-PSSession -ComputerName "SRV-FILE-01" -Credential (Get-Credential) # Ejecutar comando en servidor remoto Invoke-Command -ComputerName "SRV-FILE-01" -ScriptBlock { Get-Service | Where-Object Status -eq Running } # Ejecutar script en múltiples servidores a la vez $servidores = @("SRV-FILE-01", "SRV-PRINT-01", "SRV-APP-01") Invoke-Command -ComputerName $servidores -ScriptBlock { [PSCustomObject]@{ Servidor = $env:COMPUTERNAME Uptime = ((Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime).ToString("dd'd 'hh'h'") CPU_Pct = (Get-WmiObject Win32_Processor | Measure-Object LoadPercentage -Average).Average } }

OpenSSH integrado en WS2022

PowerShell — Admin
# Instalar OpenSSH Server (incluido en WS2022) Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Iniciar y configurar inicio automático Start-Service sshd Set-Service -Name sshd -StartupType Automatic # Verificar que el firewall permite SSH Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" # Configurar PowerShell como shell por defecto para SSH New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell ` -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force # Conectar desde cliente Linux/Mac # ssh administrador@192.168.1.10
🛡️
15 · Windows Firewall Advanced

Firewall Avanzado — Reglas, Puertos y Aislamiento

Gestión completa del firewall: reglas de entrada/salida, perfiles, bloqueo de IPs y exportación de configuración.

Avanzado
StandardDatacenterPowerShell⚠ Admin

Puertos de referencia para WS2022

PuertoProtocoloServicioPerfilAcción
53TCP/UDPDNSDomainPermitir
67–68UDPDHCPDomainPermitir
88TCP/UDPKerberosDomainPermitir
135TCPRPCDomainSolo LAN
389/636TCP/UDPLDAP/LDAPSDomainPermitir
443TCPHTTPS (salida)AllPermitir salida
445TCPSMBDomainSolo LAN
3389TCPRDPDomainBloquear externo
5985TCPWinRM HTTPDomainSolo LAN
5986TCPWinRM HTTPSDomainPermitir
PowerShell — Admin
# Estado del firewall en todos los perfiles netsh advfirewall show allprofiles # Crear regla de entrada para puerto específico (solo LAN) New-NetFirewallRule ` -DisplayName "SMB interno LAN" ` -Direction Inbound ` -Protocol TCP ` -LocalPort 445 ` -RemoteAddress "192.168.1.0/24" ` -Action Allow ` -Profile Domain,Private ` -Enabled True # Bloquear IP sospechosa New-NetFirewallRule -DisplayName "BLOCK-Attacker" ` -Direction Inbound -RemoteAddress "198.51.100.0/24" -Action Block # Ver reglas activas ordenadas Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True"} | Select-Object DisplayName, Direction, Action | Sort-Object Direction | Format-Table # Exportar configuración completa del firewall netsh advfirewall export "C:\Backup\Firewall_$(Get-Date -f yyyyMMdd).wfw" # Importar configuración guardada netsh advfirewall import "C:\Backup\Firewall_20260315.wfw" # Abrir consola avanzada de Firewall wf.msc
⬛ FUNCIONALIDADES EXCLUSIVAS WS2022
☁️
16 · Azure Arc y Gestión Híbrida

Azure Arc — Gestión Híbrida On-Premises + Cloud

Conectar WS2022 a Azure Arc para monitoreo, políticas, actualizaciones y Defender for Cloud.

Avanzado
StandardDatacenterAzure Edition⚠ Suscripción Azure
¿Qué es Azure Arc?

Azure Arc extiende el plano de control de Azure a servidores on-premises. Permite gestionar el servidor WS2022 desde el portal de Azure: aplicar políticas, monitorear con Azure Monitor, usar Defender for Cloud y aplicar Hotpatch (Azure Edition) sin reinicio.

PowerShell — Admin
# Instalar el agente Azure Connected Machine # Descargar desde: https://aka.ms/AzureConnectedMachineAgent # Conectar servidor a Azure Arc (requiere suscripción Azure) Connect-AzConnectedMachine ` -ResourceGroupName "rg-servidores" ` -Location "westeurope" ` -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # Alternativa: Script de incorporación desde el portal de Azure # Portal Azure → Azure Arc → Servers → Add → Generate script # Verificar estado del agente Arc azcmagent show azcmagent check # Ver extensiones instaladas azcmagent extension list # Instalar extensión de monitoreo (Azure Monitor Agent) azcmagent extension add --name AzureMonitorWindowsAgent ` --publisher Microsoft.Azure.Monitor

Azure Automanage para WS2022

PowerShell — Admin
# Una vez conectado a Arc, desde Azure PowerShell: Import-Module Az # Ver servidores Arc registrados Get-AzConnectedMachine -ResourceGroupName "rg-servidores" # Asignar perfil de Automanage (configura backups, actualizaciones, monitoreo) New-AzAutomanageConfigurationProfile -ResourceGroupName "rg-servidores" ` -Name "prod-profile" -Location "westeurope" # Habilitar Azure Update Manager (reemplaza WSUS para entornos híbridos) # Portal Azure → Azure Update Manager → Machines → Add machines
🐳
17 · Windows Containers

Contenedores Windows — Docker y Kubernetes

Instalar Docker en WS2022, imágenes de contenedor Windows nativas y configuración básica.

Avanzado
StandardDatacenter⚠ Reinicio requerido
PowerShell — Admin
# Instalar el rol de Contenedores de Windows Install-WindowsFeature -Name Containers -Restart # Instalar Docker Engine (después del reinicio) Install-Module DockerMsftProvider -Repository PSGallery -Force Install-Package Docker -ProviderName DockerMsftProvider -Force # Iniciar Docker y habilitarlo Start-Service Docker Set-Service -Name Docker -StartupType Automatic # Verificar versión de Docker docker version docker info # Descargar imagen base de Windows Server Core (WS2022) docker pull mcr.microsoft.com/windows/servercore:ltsc2022 # Descargar imagen Nano Server (muy ligera) docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022 # Ejecutar contenedor de prueba docker run --rm mcr.microsoft.com/windows/servercore:ltsc2022 ipconfig # Ver contenedores en ejecución docker ps # Ver todas las imágenes descargadas docker images # Ejemplo: IIS en contenedor docker run -d -p 8080:80 --name iis-test mcr.microsoft.com/windows/servercore/iis
⬛ RESOLUCIÓN DE PROBLEMAS
🔧
18 · Troubleshooting

Resolución de Problemas Frecuentes

Los 15 problemas más comunes en WS2022 con diagnóstico exacto y solución paso a paso.

Variable
StandardDatacenter
SíntomaCausa más probableSolución rápida
Clientes no pueden autenticarseHora desincronizada >5 min (Kerberos)w32tm /resync /force
No se puede unir al dominioDNS del cliente no apunta al DCVerificar DNS en NIC del cliente
GPO no se aplicaReplicación AD pendiente o enlace GPO incorrectogpupdate /force + repadmin /syncall
SYSVOL no replicaDFSR detenido o desincronizadodfsrdiag SyncNow /Membership
DNS no resuelve internamenteZona invertida faltante o PTR recordsVerificar zona en DNS Manager + ipconfig /registerdns
DHCP no asigna IPsNo autorizado en AD o scope agotadoAdd-DhcpServerInDC + verificar rango
Carpetas SMB inaccesiblesFirewall bloqueando 445 o permisos NTFSVerificar regla Firewall + icacls
Alto uso de disco C:WinSxS, logs o actualizaciones antiguasDISM /StartComponentCleanup /ResetBase
WinRM no conectaServicio detenido o FirewallEnable-PSRemoting -Force
RDP acceso denegadoUsuario no en grupo Remote Desktop UsersAdd-LocalGroupMember -Group "Remote Desktop Users"

Reparación del sistema operativo

CMD — Admin
:: Reparación completa (siempre en este orden) sfc /scannow DISM /Online /Cleanup-Image /CheckHealth DISM /Online /Cleanup-Image /ScanHealth DISM /Online /Cleanup-Image /RestoreHealth sfc /scannow :: segunda pasada después de DISM :: Diagnóstico completo del DC dcdiag /test:all /v /f:C:\Logs\dcdiag.txt :: Ver y reparar replicación AD repadmin /replsummary repadmin /showrepl * /errorsonly repadmin /syncall /AdeP :: Reparar SYSVOL (DFSR) dfsrdiag SyncNow /Membership:empresa.local :: Si el servidor no arranca — WinRE bootrec /fixmbr bootrec /fixboot bootrec /rebuildbcd :: Restaurar estado del sistema desde backup wbadmin start systemstaterecovery -version:03/15/2026-02:00 -quiet
⬛ CHECKLIST Y MANTENIMIENTO
19 · Checklist de Mantenimiento

Checklist Completa — Mantenimiento Periódico

Plan de mantenimiento semanal, mensual, trimestral y anual con script de automatización completo.

📅 Semanal

  • ☐ Revisar Event Viewer (errores críticos)
  • ☐ Verificar espacio libre en todos los discos (>20%)
  • ☐ Confirmar que los backups completaron OK
  • dcdiag /test:Connectivity
  • ☐ Revisar cuentas AD bloqueadas
  • ☐ Comprobar replicación AD: repadmin /replsummary
  • ☐ Verificar servicios críticos en ejecución

📆 Mensual

  • ☐ Aplicar actualizaciones de seguridad (con backup previo)
  • sfc /scannow + DISM /RestoreHealth
  • ☐ Revisar usuarios inactivos (>90 días) y deshabilitar
  • ☐ Limpiar archivos temporales y caché WU
  • ☐ Revisar logs de auditoría de seguridad
  • ☐ Test de restauración desde backup (archivo aleatorio)
  • ☐ Revisar intentos de login fallidos (Event 4625)

📊 Trimestral

  • dcdiag /test:all /v — diagnóstico completo
  • ☐ Verificar salud SMART de todos los discos
  • ☐ Optimizar base de datos AD (si fragmentación >20%)
  • ☐ Renovar contraseñas de cuentas de servicio
  • ☐ Revisar reglas del Firewall
  • ☐ Revisar membresías de grupos privilegiados (DA, EA)
  • ☐ Actualizar documentación del servidor

🗓️ Anual

  • ☐ Test completo del Plan de Recuperación ante Desastres
  • ☐ Actualizar BIOS/firmware del servidor
  • ☐ Limpieza física del hardware (polvo, ventiladores)
  • ☐ Revisar capacidad vs. crecimiento previsto
  • ☐ Verificar fecha de caducidad de certificados SSL/TLS
  • ☐ Revisar licencias (cobertura, fechas, expansión)
  • ☐ Actualizar el plan de contingencia y contactos

Script de mantenimiento mensual completo

PowerShell — Script (monthly-maintenance.ps1)
#requires -RunAsAdministrator # Script de mantenimiento mensual automatizado para WS2022 # Guardar en C:\Scripts\ y programar como tarea el primer domingo del mes $log = "C:\Logs\Maintenance\maint_$(Get-Date -f 'yyyyMMdd').log" New-Item -Path (Split-Path $log) -ItemType Directory -Force | Out-Null Start-Transcript -Path $log function Log($msg,$col="White"){ Write-Host "[$(Get-Date -f 'HH:mm:ss')] $msg" -ForegroundColor $col } Log "═══ MANTENIMIENTO MENSUAL WS2022 — $(Get-Date -f 'dd/MM/yyyy') ═══" Cyan # 1. Verificar integridad del sistema Log "[1/7] SFC — verificando archivos del sistema..." sfc /scannow # 2. Reparar imagen Windows Log "[2/7] DISM — reparando imagen de Windows..." DISM /Online /Cleanup-Image /RestoreHealth # 3. Limpiar archivos temporales Log "[3/7] Limpiando archivos temporales..." @("$env:TEMP\*", "C:\Windows\Temp\*") | ForEach-Object { Remove-Item $_ -Recurse -Force -ErrorAction SilentlyContinue } # 4. Limpiar caché Windows Update Log "[4/7] Limpiando caché Windows Update..." Stop-Service wuauserv -Force Remove-Item "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue Start-Service wuauserv # 5. Diagnóstico AD Log "[5/7] Ejecutando diagnóstico Active Directory..." dcdiag /test:all /f:C:\Logs\Maintenance\dcdiag_$(Get-Date -f 'yyyyMMdd').txt repadmin /replsummary >> "$log" # 6. Optimizar discos Log "[6/7] Optimizando discos..." Get-Volume | Where-Object {$_.DriveLetter} | Optimize-Volume -Verbose # 7. Resumen final Log "[7/7] Resumen de salud:" Cyan $os = Get-WmiObject Win32_OperatingSystem Log "RAM libre: $([math]::Round($os.FreePhysicalMemory/1MB,2)) GB" Get-Volume | Where-Object {$_.DriveLetter} | Select-Object DriveLetter, @{N="Libre_GB";E={[math]::Round($_.SizeRemaining/1GB,1)}} | Format-Table Log "═══ MANTENIMIENTO COMPLETADO ═══" Green Stop-Transcript
📌
Documentación esencial del servidor: Mantén un documento actualizado con IP, dominio, nombre NetBIOS, contraseña DSRM, licencias, contactos del proveedor, fecha del último backup y el plan de recuperación. Guárdalo cifrado y con una copia física offsite.

Deja una respuesta

GPS-971.com. Todos los derechos reservados. Desarrollado por www.gps-971.com

GPS-971.com. Todos los derechos reservados. Desarrollado por www.gps-971.com