This lesson covers the Windows Server platform: version history, editions, the Server Manager interface, core roles, and the initial configuration steps every administrator performs after a fresh installation.
| Version | Build | Released | Key Additions | Support Ends |
|---|---|---|---|---|
| Windows Server 2016 | 14393 | Oct 2016 | Containers (Windows Containers), Nano Server, Shielded VMs, Storage Spaces Direct (S2D), Windows Defender ATP | Jan 2027 |
| Windows Server 2019 | 17763 | Oct 2018 | Windows Admin Center, Storage Migration Service, System Insights, Linux containers on Windows, improved HCI | Jan 2029 |
| Windows Server 2022 | 20348 | Aug 2021 | Secured-core server, TLS 1.3 by default, SMB AES-256 encryption, Azure Arc integration, improved DNS-over-HTTPS | Oct 2031 |
| Feature | Essentials | Standard | Datacenter |
|---|---|---|---|
| Max Users | 25 users / 50 devices | Unlimited | Unlimited |
| Max CPU sockets | 2 | Unlimited | Unlimited |
| Hyper-V VMs included | 0 (not licensed) | 2 VMs per license | Unlimited VMs |
| Storage Spaces Direct | No | No | Yes |
| Shielded VMs (host) | No | Yes (limited) | Yes (full) |
| Software-Defined Networking | No | No | Yes |
| Domain Controller | Yes (1st DC only) | Yes | Yes |
| Target use | Small business (<25 users) | Standard workloads | Highly virtualized / cloud |
Server Manager is the primary GUI management tool that opens automatically after login on a full GUI installation.
All server roles and Windows features are installed through the same wizard:
Install-WindowsFeature. This is faster for automation and Server Core environments.# PowerShell equivalents for role installation
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Install-WindowsFeature -Name DNS -IncludeManagementTools
Install-WindowsFeature -Name DHCP -IncludeManagementTools
Install-WindowsFeature -Name Web-Server -IncludeAllSubFeature -IncludeManagementTools
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
# View all available features
Get-WindowsFeature | Where-Object {$_.InstallState -eq "Available"} | Format-Table Name, DisplayName
| Role | Feature Name | Management Tool | Purpose |
|---|---|---|---|
| Active Directory Domain Services | AD-Domain-Services | dsa.msc / ADUC | Authentication, authorization, directory services for domain |
| DNS Server | DNS | dnsmgmt.msc | Hostname-to-IP resolution for internal and external names |
| DHCP Server | DHCP | dhcpmgmt.msc | Dynamic IP address assignment to network clients |
| Web Server (IIS) | Web-Server | inetmgr | Host websites, web applications, REST APIs |
| File and Storage Services | FS-FileServer | Server Manager / fsmgmt.msc | SMB file shares, DFS, quotas, shadow copies |
| Hyper-V | Hyper-V | virtmgmt.msc | Hardware virtualization, host for VMs |
| Remote Desktop Services | RDS-RD-Server | tsconfig.msc / Remote Desktop Manager | Multi-user remote desktop, RemoteApp, VDI |
| Windows Server Update Services | UpdateServices | wsus.msc | Centrally approve and deploy Windows updates |
| Active Directory Certificate Services | AD-Certificate | certsrv.msc | Internal PKI / Certificate Authority |
| Network Policy and Access Services | NPAS | nps.msc | RADIUS server for VPN/Wi-Fi authentication, NAP |
| Print and Document Services | Print-Server | printmanagement.msc | Shared printer management, print queues |
Every new Windows Server deployment should go through this checklist before putting the server into production:
In Server Manager → Local Server → click the Computer Name link, or via PowerShell:
Rename-Computer -NewName "SRV-DC01" -Restart
# Find the interface index
Get-NetAdapter
# Set static IP, subnet mask, gateway, and DNS
New-NetIPAddress -InterfaceIndex 5 -IPAddress 192.168.1.10 -PrefixLength 24 -DefaultGateway 192.168.1.1
Set-DnsClientServerAddress -InterfaceIndex 5 -ServerAddresses ("192.168.1.10","8.8.8.8")
# Verify
Get-NetIPAddress -AddressFamily IPv4 | Select-Object InterfaceAlias, IPAddress, PrefixLength
# Check pending updates (requires PSWindowsUpdate module or WSUS) # Via Settings: Start → Settings → Update & Security → Windows Update # PowerShell (requires NuGet + PSWindowsUpdate module): Install-PackageProvider -Name NuGet -Force Install-Module -Name PSWindowsUpdate -Force Get-WindowsUpdate Install-WindowsUpdate -AcceptAll -AutoReboot
# Check firewall status on all profiles Get-NetFirewallProfile | Select-Object Name, Enabled # Enable firewall on all profiles (should already be on) Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
# Enable RDP Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0 # Create firewall rule to allow RDP inbound Enable-NetFirewallRule -DisplayGroup "Remote Desktop" # Allow RDP through firewall (if rule missing) New-NetFirewallRule -DisplayName "Allow RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
Set-TimeZone -Name "Eastern Standard Time"
# List all available time zones:
Get-TimeZone -ListAvailable | Where-Object {$_.Id -like "*Pacific*"}
Once RDP is enabled, connect from any Windows machine using mstsc.exe:
# Launch Remote Desktop Connection (from Run dialog or Start) mstsc.exe # Connect directly to a specific server mstsc /v:192.168.1.10 # Connect with specific resolution mstsc /v:SRV-DC01.lab.local /w:1920 /h:1080 # Full-screen mode mstsc /v:SRV-DC01 /f
| RDP Setting | Location | Notes |
|---|---|---|
| Enable RDP | Server Manager → Local Server | Sets registry key fDenyTSConnections=0 |
| Allowed users | System Properties → Remote tab → Select Users | Domain Admins have access by default |
| Network Level Auth (NLA) | System Properties → Remote tab | Requires domain credentials before session starts — leave enabled |
| RDP Port | HKLM\SYSTEM\CCS\Control\Terminal Server\WinStations\RDP-Tcp → PortNumber | Default 3389; can change for security (update firewall rule too) |
Windows Admin Center (WAC) is a browser-based, zero-additional-cost management tool introduced with Server 2019. It replaces many MMC snap-ins with a modern web interface.
# Install WAC silently (run on the gateway server) # Download MSI from Microsoft, then: msiexec /i WindowsAdminCenter.msi /qn /L*v log.txt SME_PORT=443 SSL_CERTIFICATE_OPTION=generate # After install, access via browser: # https://servername or https://localhost (if installed locally)
Server Core is a minimal Windows Server installation with no GUI (no Explorer, no desktop, no Server Manager GUI). Management is done entirely through PowerShell, command-line tools, or remotely via WAC/MMC.
# On Server Core — initial config with sconfig.cmd (menu-driven) sconfig # Or via PowerShell directly on Server Core: # Set hostname Rename-Computer -NewName "SRV-CORE01" -Restart # Set IP New-NetIPAddress -InterfaceIndex 3 -IPAddress 192.168.1.20 -PrefixLength 24 -DefaultGateway 192.168.1.1 # Enable PowerShell remoting (so you can manage it from another PC) Enable-PSRemoting -Force # Install a role on Server Core (same cmdlets, no GUI wizard): Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
MMC is the framework that hosts most Windows administrative tools as "snap-ins". Type any of these in the Run dialog (Win+R):
| Command | Tool | Use For |
|---|---|---|
compmgmt.msc | Computer Management | All-in-one: Device Manager, Disk Management, Services, Users, Shares |
diskmgmt.msc | Disk Management | Partition disks, format volumes, assign drive letters, extend volumes |
services.msc | Services | Start/stop/restart Windows services, change startup type |
eventvwr.msc | Event Viewer | View application, security, system, and custom logs |
gpedit.msc | Local Group Policy Editor | Local policies (not domain GPO) |
secpol.msc | Local Security Policy | Password policy, account lockout, audit policy (local) |
taskschd.msc | Task Scheduler | Create and manage scheduled tasks |
devmgmt.msc | Device Manager | Hardware drivers, device status |
certmgr.msc | Certificate Manager (user) | Personal/machine certificates |
wf.msc | Windows Firewall Advanced Security | Create inbound/outbound rules, connection security rules |
dsa.msc | Active Directory Users and Computers | Manage AD users, groups, computers, OUs (requires AD DS role) |
gpmc.msc | Group Policy Management Console | Create, link, edit, and manage domain GPOs (requires GPMC feature) |
Event Viewer (eventvwr.msc) is the primary tool for reviewing what happened on a server. Understanding the log structure is essential for troubleshooting.
| Log | Contents | Key Events |
|---|---|---|
| Application | Events from applications and services (non-OS) | Database errors, application crashes, service failures |
| Security | Audit events: logons, policy changes, object access | 4624 (logon), 4625 (failed logon), 4720 (user created) |
| System | OS and driver events | Service start/stop, hardware failures, DHCP, disk errors |
| Setup | Software installation events | Role installations, Windows Update installs |
| Forwarded Events | Events forwarded from other computers (WEF) | Centralized log collection |
Custom Views let you create filtered log views across multiple logs:
# PowerShell — query Event Viewer logs
# Get last 10 failed logon attempts
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 10 |
Select-Object TimeCreated, Message | Format-List
# Get all critical and error events from System log in last 24 hours
$start = (Get-Date).AddHours(-24)
Get-WinEvent -FilterHashtable @{LogName='System'; Level=1,2; StartTime=$start} |
Select-Object TimeCreated, LevelDisplayName, Message | Format-Table -Wrap
Task Scheduler (taskschd.msc) runs programs, scripts, or commands at specified times or in response to events.
# Create a scheduled task to run a backup script daily at 2 AM
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument "-NonInteractive -WindowStyle Hidden -File C:\Scripts\backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At "2:00AM"
$settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable `
-WakeToRun -StartWhenAvailable
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "Daily Backup" -Action $action `
-Trigger $trigger -Settings $settings -Principal $principal -Description "Nightly backup job"
# Manage tasks
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"} | Select-Object TaskName, LastRunTime
Start-ScheduledTask -TaskName "Daily Backup"
Disable-ScheduledTask -TaskName "Daily Backup"
Unregister-ScheduledTask -TaskName "Daily Backup" -Confirm:$false
You now understand Windows Server editions, the Server Manager interface, how to install roles, perform initial configuration, and use core management tools like Event Viewer and Task Scheduler.
Next up: Active Directory Domain Services →