WSA Module 01: Windows Server Fundamentals

Slide 1 of 27 ← Course Overview

Windows Server Fundamentals

Your journey into Windows Server administration begins here.

What You'll Learn

  • Windows Server Editions - Standard, Datacenter, and licensing models
  • Installation Options - Desktop Experience vs Server Core
  • Server Manager - Your command center for Windows Server
  • PowerShell Basics - Cmdlets, the pipeline, and filtering with Where-Object
  • Initial Configuration - Post-installation setup tasks
Certification Alignment: This module covers objectives from the AZ-800 exam domain "Manage Windows Servers and workloads in a hybrid environment" (10-15% of exam).
PC PC PC PC Windows Server serves clients across the network always-on, multi-client, multi-role

Windows Server Editions

Windows Server 2022 comes in several editions, each designed for different workloads and environments.

Edition Use Case Licensing
Standard Physical or lightly virtualized environments Per-core + CALs, 2 VMs included
Datacenter Highly virtualized datacenters Per-core + CALs, Unlimited VMs
Essentials Small business (≤25 users) Per-server, no CALs needed
Azure Edition Azure hybrid cloud integration Azure-only features (Hotpatch)
Key Insight: The main difference between Standard and Datacenter is virtualization rights. Choose Datacenter when you need more than 2 VMs per host.
Edition comparison Standard2 VMsincludedPer-core +CALs Datacenter∞ VMsunlimitedPer-core + CALs Essentials≤25 usersSmall bizPer-serverno CALs Azure EditioncloudHotpatchno rebootsAzure-only Datacenter pulses, the heavily-virtualized choice

Installation Options

Windows Server can be installed in two modes. This decision is made during installation and affects how you manage the server.

Desktop Experience

  • Full GUI with familiar Windows interface
  • Server Manager dashboard
  • Larger disk footprint (~10GB more)
  • More attack surface
  • Best for: Learning, legacy apps

Server Core

  • Command-line only (no GUI)
  • Managed via PowerShell or remote tools
  • Smaller footprint, fewer updates
  • Reduced attack surface
  • Best for: Production, security-focused
Important: You can switch from Desktop Experience to Server Core, but not the other way around without reinstallation. Choose carefully!
Two install modesDesktop ExperienceGUI + Server Manager~10 GB more disklarger attack surfaceBest for: learningServer CoreC:\> hostnameDC01C:\> powershellPS C:\> Get-ServiceRunning BFE ...PS C:\> _Command-line onlysmaller footprintreduced attack surfaceBest for: production

Server Manager

Server Manager is the central management console for Windows Server with Desktop Experience. It launches automatically at logon.

Server Manager Dashboard

  • Welcome Tile - Quick actions (Add roles, Add servers, Create groups)
  • Roles & Server Groups - Monitor installed roles across multiple servers
  • Events - Aggregated event log entries with filtering
  • Services - Quick view of running/stopped services
  • Performance - CPU, memory counters at a glance
  • BPA Results - Best Practices Analyzer findings
Pro Tip: Server Manager can manage multiple remote servers. Add them via "Manage > Add Servers" to create a single pane of glass for your infrastructure.
Server Manager DashboardManage ▾   Tools ▾   View ▾   HelpWelcomeAdd rolesAdd serversCreate groupsRoles12installedEventsPerformanceServices● Running   142● Stopped    28BPA Results⚠ 3 warnings to review✓ 47 checks passedSingle pane of glass for local + remote servers

Roles and Features

Windows Server functionality is divided into Roles (major services) and Features (supporting capabilities).

Common Server Roles

Role Purpose
Active Directory Domain Services Identity management, domain authentication
DNS Server Name resolution for the domain
DHCP Server Automatic IP address assignment
File and Storage Services File sharing, storage management
Hyper-V Virtualization platform
Web Server (IIS) Host websites and web applications
Installation: Server Manager → Manage → Add Roles and Features Wizard
Roles & Features stack on the serverWindows Serverbase OS(Server Manager → Add Roles)AD DSidentityDNSname resolutionDHCPIP assignmentFile & StorageSMB sharesHyper-VvirtualizationIISweb hostingPrint & Docprint server

PowerShell: Verb-Noun Pattern

PowerShell is the backbone of modern Windows Server administration, every GUI action has a PowerShell equivalent and PowerShell can do much more.

PowerShell commands (called cmdlets) follow a consistent Verb-Noun pattern that tells you exactly what each command does:

  • Get-Service, Get-Process, Get-EventLog (retrieve info)
  • Set-ExecutionPolicy, Set-Service (modify settings)
  • New-Item, New-ADUser (create objects)
  • Remove-Item, Remove-WindowsFeature (delete objects)
Every cmdlet = Verb-NounVerbwhat to do-Nounwhat to act oncmdletpredictableExamples:Get-ServiceSet-ExecutionPolicyNew-ADUserRemove-ItemReading the name tells you what it does

Checking PowerShell Version

PowerShell has built-in variables that hold system data, they always start with $. First check on any server: which PowerShell version is running. PS 5.1 (built into Windows Server) and PS 7+ (installed separately) support different cmdlets.

# Query the built-in $PSVersionTable variable PS C:\> $PSVersionTable
# Output: Name Value PSVersion 5.1.20348.2849 PSEdition Desktop CLRVersion 4.0.30319.42000
Check PowerShell VersionPowerShellPS C:\> $PSVersionTable_Name Value──── ─────PSVersion 5.1.20348.2849PSEdition DesktopCLRVersion 4.0.30319.42000PSCompatibleVersions {1.0, 2.0, 3.0...}PS C:\> _

Discovering Cmdlets & Help

Search for cmdlets by verb to discover what's available, then pull up built-in help for any command.

# List every cmdlet that starts with "Get-" PS C:\> Get-Command -Verb Get
# Output (truncated): Cmdlet Get-Acl Microsoft.PowerShell.Security Cmdlet Get-Service Microsoft.PowerShell.Management Cmdlet Get-Process Microsoft.PowerShell.Management
# Show help for Get-Service with working examples PS C:\> Get-Help Get-Service -Examples
Discover & learn cmdletsGet-Commandfind cmdletsGet-AclSecurityGet-ServiceManagementGet-ProcessManagement...hundreds moreGet-Helplearn how to use themNAME Get-ServiceSYNOPSIS Gets the services on the computer. ── Example 1 ── PS> Get-Service ── Example 2 ── PS> Get-Service -Name

The PowerShell Pipeline

The pipeline operator | sends the output of one command directly into another for filtering, sorting, or formatting, all in a single line.

The pipe is a conveyor belt: the left command produces objects, the right command processes each one. Unlike Linux pipes that pass raw text, PowerShell pipes pass full objects with inspectable, filterable properties.

# Send all services to Select-Object to show only the first 5 PS C:\> Get-Service | Select-Object -First 5
Get-Service produces objects | S1 S2 S3 S4 S5 Select-Object -First 5 processes each PowerShell objects flow through the pipe (unlike Linux pipes that pass raw text) Source Pipe Consumer

Filtering with Where-Object

Where-Object passes through only the objects matching your condition. The condition lives inside a script block { }.

Inside the script block, $_ is the current object. Access its properties with a dot ($_.PropertyName). The operator -eq means "equals."

# Keep only services where Status equals 'Running' PS C:\> Get-Service | Where-Object { $_.Status -eq 'Running' }
# Output: Status Name DisplayName Running BFE Base Filtering Engine Running CryptSvc Cryptographic Services
Where-Object filters the pipelineGet-Serviceall services(Running + Stopped)filter$_.Status-eq 'Running'Running onlyStopped blockedThe script block { $_.Status -eq 'Running' } runs once per object.$_ = the current object; .Status = access its property.Objects passing the test continue down the pipeline.Green pass, red blocked

Where-Object: Anatomy + Operators

Anatomy of the Command

Get-ServiceRetrieve all services
|Pipe to next command
Where-ObjectFilter the pipeline
{ }Script block
$_Current object
.StatusAccess property
-eq 'Running'Equals comparison

Comparison Operators

-eqEquals
-neNot equals
-gt / -ltGreater / Less than
-likeWildcard match (Win*)

Booleans are $true and $false.

Anatomy of a filter commandGet-Service | Where-Object { $_.Status -eq 'Running' }Get-Serviceproduces objectspipe |passes dataWhere-Objectfilters themComparison operators-eqequals-nenot equal-gtgreater than-ltless than-likewildcard match

Chaining Multiple Pipes

Chain as many pipes as you need. Each | passes the result to the next command, building a data-processing assembly line.

# Get processes → sort by CPU usage → take the top 5 PS C:\> Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
# Output: Handles NPM(K) PM(K) WS(K) CPU(s) Id ProcessName 1842 98 245612 301244 184.33 4012 svchost 623 31 87204 93180 72.08 2548 ServerManager 412 22 51020 58432 31.55 876 lsass
Lab Preview: In Lab 2, you'll use Get-WindowsFeature | Where-Object { $_.Installed -eq $true } to filter installed server roles, same pattern.
Pipeline chainGet-Processall processes|Sort-Object CPU-Descending|Select-Object-First 5Each pipe transforms the data:step 1: get allstep 2: sort by CPUstep 3: top 5Handles NPM(K) PM(K) WS(K) CPU(s) Id ProcessName 1842 98 245612 301244 184.33 4012 svchost 623 31 87204 93180 72.08 2548 ServerManager 412 22 51020 58432 31.55 876 lsass

Essential Commands: System Info

First on any new server: get its identity and hardware details. Two commands, one for the full picture, one for the quick answer.

# Pull detailed hardware, OS, and domain info PS C:\> Get-ComputerInfo
# Output: WindowsProductName WindowsVersion CsDomain Windows Server 2022 Standard 21H2 corp.local
# Quick identity check, just the hostname PS C:\> hostname DC01
Get-ComputerInfo + hostnameDC01corp.localWindows Server 2022StandardPS> Get-ComputerInfoWindowsProductNameWindows Server 2022CsDomain   corp.localPS> hostnameDC01Full picture or quick answer, whichever you need

Essential Commands: Services

Services are the backbone of Windows Server. Check which ones are running, start stopped services, restart misbehaving ones.

# Show only services currently running PS C:\> Get-Service | Where-Object {$_.Status -eq 'Running'}
# Start the Print Spooler service PS C:\> Start-Service -Name Spooler
# Restart the Windows Time service to force a time resync PS C:\> Restart-Service -Name W32Time
Service control: query, start, restartRUNRunningBFE, W32Time...STOPStoppedSpooler...CYCLERestartingW32Time...Get-Service| Where RunningStart-Service-Name SpoolerRestart-Service-Name W32TimeSame Verb-Noun pattern, three different actions

Essential Commands: Processes

When a server is slow, find which processes are consuming the most CPU.

# Sort processes by CPU usage, top 10 consumers PS C:\> Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
# Output: Handles NPM(K) PM(K) WS(K) CPU(s) Id ProcessName 1842 98 245612 301244 184.33 4012 svchost 623 31 87204 93180 72.08 2548 ServerManager 412 22 51020 58432 31.55 876 lsass
Top processes by CPUProcessNameCPU(s)Barsvchost184.33ServerManager72.08lsass31.55explorer22.14winlogon8.41Get-Process | Sort-Object CPU -Descending | Select-Object -First 5

Essential Commands: Event Logs

Event logs are your server's diary. Check recent entries or filter by error level when troubleshooting.

# 20 most recent entries from the System event log PS C:\> Get-EventLog -LogName System -Newest 20
# Filter the System log to show only Error-level entries PS C:\> Get-EventLog -LogName System -EntryType Error
# Output (errors only): Index Time EntryType Source EventID Message 8839 Feb 08 08:30 Error NETLOGON 5719 No domain control...
Pro Tip: Use Get-Help cmdlet -Online to open Microsoft docs in your browser for any command.
Event log entries scroll pastGet-EventLog -LogName System -Newest 20Index Time EntryType Source EventID Message8842 Feb 08 10:15 Info Svc Ctrl Mgr 7036 Service started8841 Feb 08 10:12 Warn Win32k 263 Display driver8840 Feb 08 09:58 Info EventLog 6013 System uptime8839 Feb 08 08:30 Error NETLOGON 5719 No domain ctrl8838 Feb 07 22:10 Error Disk 11 Driver detected8837 Feb 07 17:00 Info Kernel-Power 1 System resume8836 Feb 07 12:33 Info DHCP 1024 Lease renewed8835 Feb 07 11:18 Warn Time-Service 134 Time skew8834 Feb 06 23:45 Info BITS 59 Transfer done| Where-Object { $_.EntryType -eq 'Error' }Filter to show only errors, your server's diary

Initial Configuration: Checklist

After installing Windows Server, complete these essential configuration tasks:

  1. Set Computer Name, rename from default (WIN-XXXXX)
  2. Configure Network, static IP for servers, DNS settings
  3. Windows Update, apply latest security patches
  4. Time Zone, critical for AD and logging
  5. Remote Desktop, enable for remote management
  6. Windows Firewall, configure for required services
  7. Join Domain, connect to Active Directory
Post-install configuration checklist1. Set Computer Name, rename from WIN-XXXXX2. Configure Network, Static IP + DNS3. Windows Update, apply security patches4. Time Zone, critical for AD & logging5. Remote Desktop + Firewall rules6. Join Domain, connect to Active DirectoryEach item maps to a PowerShell command

Rename Server & Assign Static IP

Every server starts with a random default name and DHCP. Rename it, then pin it to a static IP so other machines can always find it.

# Rename this server and reboot to apply PS C:\> Rename-Computer -NewName "DC01" -Restart
# Assign a static IP, subnet, and gateway to the Ethernet adapter PS C:\> New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.10 -PrefixLength 24 -DefaultGateway 192.168.1.1
# Output: IPAddress InterfaceAlias PrefixLength DefaultGateway 192.168.1.10 Ethernet 24 192.168.1.1
Rename + Static IPIdentityWIN-A83KD92MN4PDC01Rename-Computer-NewName "DC01"-Restartreboot requiredNetwork192.168.1.10/24gateway: 192.168.1.1static, no DHCPNew-NetIPAddress-IPAddress 192.168.1.10-PrefixLength 24other machines can find you

Configure DNS

Without correct DNS, the server cannot resolve domain names or find domain controllers for authentication. Point it at your local DC plus a public fallback.

# Set the Ethernet adapter's DNS to local DC + public fallback PS C:\> Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 192.168.1.10,8.8.8.8
Lab Preview: In Lab 1 you'll run these three commands (rename, static IP, DNS) to bring a freshly-installed server into the corp.local domain.
DNS resolution pathServerneeds to finddc02.corp.localLocal DC192.168.1.10authoritativefor corp.localfallback8.8.8.8Public Googleexternal domains(microsoft.com)→ 192.168.1.20Without DNS: no domain auth, no AD, no internet by name.Set-DnsClientServerAddress -ServerAddresses 192.168.1.10,8.8.8.8

Remote Management Options

In production, you rarely sit at a server console. Four primary remote-management tools, each with a use case:

ToolUse CaseProtocol
Remote Desktop (RDP)Full GUI accessTCP 3389
PowerShell RemotingCommand-line administrationWinRM (5985/5986)
Server ManagerMulti-server GUI managementWinRM
Windows Admin CenterModern web-based managementHTTPS
Four remote management toolsRDPFull GUIPSRemotingPS C:\>Enter-PSSession_CLI adminServer MgrMulti-server GUIWin Admin Ctrhttps://Web-based3389WinRM 5985WinRMHTTPS 443Production admins rarely sit at server consoles.Each tool has its niche, the protocol differs.

Enable PSRemoting & Connect

PowerShell Remoting must be enabled on the target first, then you can open an interactive session that gives you a live prompt on the remote server.

# Enable WinRM and configure the firewall PS C:\> Enable-PSRemoting -Force
# Open an interactive PowerShell session on SERVER01 PS C:\> Enter-PSSession -ComputerName SERVER01
# Prompt changes to show you're remote: [SERVER01]: PS C:\Users\Administrator\Documents>
Open a remote PowerShell sessionYour machinePS C:\> Enter-PSSession SERVER01[SERVER01]: PS>prompt changed!WinRM 5985output backSERVER01remote serverPS C:\> Enable-PSRemoting -ForceWinRM service started.WinRM firewall exception enabled.Listening on port 5985.

Fan-Out with Invoke-Command

Invoke-Command runs the same script block on multiple servers in parallel, how admins manage fleets of machines efficiently.

# Run Get-Service on DC01 and DC02 simultaneously PS C:\> Invoke-Command -ComputerName DC01,DC02 -ScriptBlock { Get-Service }
# Output (PSComputerName tags each result): Status Name DisplayName PSComputerName Running W32Time Windows Time DC01 Running DNS DNS Server DC01 Running W32Time Windows Time DC02
Invoke-Command fans outYour machineInvoke-CommandDC01Get-ServiceDC02Get-ServiceFS01Get-ServiceInvoke-Command -ComputerName DC01,DC02,FS01 -ScriptBlock { Get-Service }One command runs on all three in parallel

Windows Admin Center

Windows Admin Center (WAC) is Microsoft's modern, browser-based management tool that consolidates many administrative tasks.

Key Features

  • Single Pane of Glass - Manage servers, clusters, and hyper-converged infrastructure
  • Azure Integration - Connect on-premises servers to Azure services
  • Role-Based Access - Delegate admin tasks securely
  • Extensions - Add functionality through Microsoft and partner extensions
  • No Agent Required - Uses existing WinRM/PowerShell
AZ-800 Note: Windows Admin Center is heavily featured in the exam. Know how to deploy it (gateway mode vs desktop mode) and use it for common tasks.
Windows Admin Center, browser UIhttps://wac.corp.local_ □ ✕ServersDC01DC02FS01ToolsRoles & featuresServicesUpdatesDC01● OnlineCPURAMServices 142running    Errors 0Last patched: 2 d agoRecent activity10:15, Service started: Windows Update09:58, System boot complete

Server Core: sconfig

Server Core has no GUI. When you log in, you get a bare command prompt. sconfig is the menu-driven Server Configuration tool for common setup tasks.

# Launch the menu-driven Server Configuration tool C:\> sconfig
# Menu shown: Server Configuration 1) Domain/Workgroup: Workgroup: WORKGROUP 2) Computer Name: WIN-A83KD92MN4P 4) Configure Remote Management: Enabled 7) Remote Desktop: Disabled 8) Network Settings
Server Core's sconfig menuServer Core, sconfig.cmd═══════════════════════════════════════Server Configuration═══════════════════════════════════════1) Domain/Workgroup: Workgroup: WORKGROUP2) Computer Name: WIN-A83K...4) Configure Remote Mgmt: Enabled7) Remote Desktop: Disabled8) Network Settings12) Log off userEnter number to select an option: _

PowerShell on Server Core

PowerShell is your primary tool on Server Core. Switch from the basic prompt into PowerShell, then list available roles and features.

# Switch from the basic command prompt into PowerShell C:\> powershell
# List all roles and features with their install status PS C:\> Get-WindowsFeature
# Output (subset): Display Name Name State [ ] AD Domain Services AD-Domain-Services Avail [ ] DNS Server DNS Avail [X] File & Storage Svcs FileAndStorage-Svcs Inst
Type powershell to escape the basic shellServer Core terminalC:\> hostnameDC01C:\> powershell_Windows PowerShellCopyright (C) Microsoft Corp. All rights reserved.PS C:\> Get-WindowsFeatureDisplay Name Install State─────────── ─────────────[ ] Active Directory Domain Svcs Available[X] File and Storage Services Installed

sconfig Menu Reference

The sconfig menu organizes common Server Core configuration into numbered options:

  • 1) Domain/Workgroup membership
  • 2) Computer name
  • 4) Remote management settings
  • 6) Windows Update settings
  • 7) Remote Desktop
  • 8) Network settings
Best Practice: Configure Server Core remotely with Windows Admin Center, PowerShell Remoting, or RSAT from another machine.
sconfig numbered menu1Domain / Workgroup membership2Computer name4Configure remote management6Windows Update settings7Remote Desktop8Network settingsType a number, press Enter, minimal-friction config

Module Summary

Key Takeaways

  • Editions: Standard vs Datacenter depends on VM licensing needs
  • Installation: Desktop Experience for learning, Server Core for production
  • Server Manager: Central dashboard for local and remote server management
  • PowerShell: Verb-Noun pattern, the pipeline |, and filtering with Where-Object
  • Initial Config: Name, IP, updates, time zone, domain join
  • Remote Tools: RDP, PowerShell Remoting, Windows Admin Center
Ready for Practice! Complete the GUI Lab to explore Server Manager, then tackle the PowerShell Lab to practice essential commands.
Module 1 takeawaysEditionsStd vs DCInstallGUI vs CoreServer MgrDashboardPowerShellVerb-NounPipeline| Where {…}Initial ConfigName + IP + DNSRemote ToolsRDP + PSRemoteServer Coresconfig + PSReady for GUI Lab → PowerShell Lab → Quiz